Django教程,如何发送多个参数?
我知道以前有人问过类似的问题,但我从未见过任何我能理解或有效的答案。但我对Django很陌生,所以我可能会错过它。但我的问题必须有一个简单的答案。 我正在关注Django的教程,在第4节,他们在发布表单后使用httpresponseredirect进入下一页Django教程,如何发送多个参数?,django,django-views,Django,Django Views,我知道以前有人问过类似的问题,但我从未见过任何我能理解或有效的答案。但我对Django很陌生,所以我可能会错过它。但我的问题必须有一个简单的答案。 我正在关注Django的教程,在第4节,他们在发布表单后使用httpresponseredirect进入下一页 return HttpResponseRedirect(reverse('polls:results', args=(question.id,))) “视图”页函数如下所示: def detail(request, question_id
return HttpResponseRedirect(reverse('polls:results', args=(question.id,)))
“视图”页函数如下所示:
def detail(request, question_id):
我的问题是:如何向函数发送更多参数
我现在试过这个:
urls.py
path('<int:question_id>/result/<int:qid>/<str:aa>/', views.result, name='result'),
views.py
return HttpResponseRedirect(reverse('bsapp:result', kwargs = dict(qid = question.id, xx = aa)))
The function
def result(request, qid, xx):
url.py
路径('/result//',views.result,name='result'),
views.py
返回HttpResponseRedirect(反向('bsapp:result',kwargs=dict(qid=question.id,xx=aa)))
功能
def结果(请求、qid、xx):
给出:django.url.exceptions.NoReverseMatch:Reverse for'result',找不到关键字参数“{'qid':3,'xx':'6'}”。尝试了1种模式:['bsapp/(?P[0-9]+)/result/(?P[0-9]+)/(?P[^/]+)/$']
您使用kwargs而不是args,其中kwargs是一个字典,其中键与url调度程序中的参数匹配-
从django.url导入路径
从…起导入视图
URL模式=[
路径('blog/',views.page),
路径('blog//page//',views.slug\u page,name=“slug\u page”),
路径('blog/page/',views.page),
]
#视图(在blog/views.py中)
def slug_页面(请求,slug,num=1):
#在这里做事
返回重定向(反向(“slug_page”,kwargs=dict(slug=“example”,num=2))
...
您可以添加任意数量的参数,只要确保您的url接受该参数即可
例:
url.py
path('detail/<int:first_arg>/<int:second_arg>/', views.section, name='article-section'),
这就是我必须做的:
xx="EXTRA ARGUMENT"
return HttpResponseRedirect(reverse('bsapp:result', args=(question.id, xx,)))
path('<int:question_id>/<str:xx>/result/', views.result, name='result'),
def result(request, question_id, xx):
xx=“额外参数”
返回HttpResponseRedirect(反向('bsapp:result',args=(question.id,xx,))
路径(“//result/”,views.result,name='result'),
def结果(请求,问题编号,xx):
感谢您的帮助,我非常感谢。在您的示例中,参数似乎是路径的一部分,而不是路径的一部分。这是我想在下一页显示的文本。还是我弄错了?让我们假设我只想发送两个词“你好”和“再见”。我该怎么做?我想发送的参数不应该是路径的一部分,而应该是我想在下一页显示的文本。在这种情况下,最好使用会话或cookie。
def detail(request, first_arg, second_arg):
xx="EXTRA ARGUMENT"
return HttpResponseRedirect(reverse('bsapp:result', args=(question.id, xx,)))
path('<int:question_id>/<str:xx>/result/', views.result, name='result'),
def result(request, question_id, xx):