Python 在post方法中访问动态url的任何直接方法
in views.pyPython 在post方法中访问动态url的任何直接方法,python,django,post,get,django-views,Python,Django,Post,Get,Django Views,in views.py class ProcessMessage(TemplateView): template_name = 'chat/chat.html' def get_object(self): id=self.kwargs.get('pk') obj=None if id is not None: obj= User.objects.get(pk=id) return obj
class ProcessMessage(TemplateView):
template_name = 'chat/chat.html'
def get_object(self):
id=self.kwargs.get('pk')
obj=None
if id is not None:
obj= User.objects.get(pk=id)
return obj
def get(self, request, pk=None,*args, **kwargs):
obj=self.get_object()
print(obj,pk)
super(ProcessMessage, self).get(request, *args, **kwargs)
return render(request, self.template_name, {'form': ChatForm()})
def post(self, request, pk=None,*args, **kwargs):
obj=self.get_object()
pk=pk
print(pk)
print('obj is',obj)
form = ChatForm(data=request.POST)
# log = logging.basicConfig(level=logging.DEBUG)
# print('post from index')
if form.is_valid():
//////something////
在URL.py中
app_name = 'chatbot'
urlpatterns = [
path('demo', views.ProcessMessage.as_view(), name='index'),
path('<uuid:pk>/demo', views.ProcessMessage.as_view(), name='index'),
]
app_name='chatbot'
URL模式=[
路径('demo',views.ProcessMessage.as_view(),name='index'),
路径('/demo',views.ProcessMessage.as_view(),name='index'),
]
我在get
方法中获取obj和pk的值,但我也希望在post
方法中获取这些值(当前没有获取值)
我需要def Post方法中URL的id/pk来获取用户信息(不,我不想使用request.user)您的模板显示您正在将表单提交到没有pk的URL:
{% url 'chat:index' %}
您应该在反转URL时包含pk,例如
{% url 'chat:index' pk %}
您需要在模板上下文中包含pk,例如
return render(request, self.template_name, {'form': ChatForm(), 'pk': pk})
我看到您对
/demo/
和/demo/
使用了相同的视图ProcessMessage
。我建议对这两个URL使用不同的视图,我认为这将有助于避免类似问题。request.POST.get('pk')
,但显然您需要一些东西(表单/JS)来在POST request中发送pk
。我也有同样的想法,但我希望有一些直接的方法,如果可能self.kwargs.get('pk'))
对于GET和POST请求的工作方式应该相同。请显示您的模板。@Alasdair我试过了,显示的值是无。哪一行显示的值是None
?请回答问题,并按照我的要求附上模板。