gpt4 book ai didi

Django - 根据下拉菜单中的选择将用户重定向到页面

转载 作者:行者123 更新时间:2023-12-04 19:06:01 25 4
gpt4 key购买 nike

我试图在 django 中使用下拉菜单来允许用户从菜单中选择一个选项,然后导航到页面。

具体来说。我正在构建一个小型项目管理系统作为一个学习项目(我知道我在这里还有很多其他问题 - 我只想先让事情发挥作用,然后再考虑样式并删除不需要的变量)。我希望用户从下拉菜单(我可以填充)中选择一个项目,然后导航到显示项目详细信息的页面。我目前通过点击链接来完成这项工作,但希望让用户可以选择现有项目并查看详细信息

html 表单应该将用户从 view_existing_projects View 带到 view_project View 。现在我可以找到过渡 View ,但是 project_id 没有通过

网址.py

url(r'^view_project/(?P<project_id>\d+)/$', views.view_project, name='view_project'),

html表单
    <form method="POST" action="/view_project/{{ project.id }}"/>{% csrf_token %}
<select name = "project_id">
{% for project in projects %}
<option value="{{ project.id }}" >{{ project.address1 }}</option>
{% endfor %}
</select>
<input type="submit" value="View Details" />
</form>

View .py
def view_existing_projects(request, user_id):
context = RequestContext(request)
user = User.objects.get(id=user_id)
projects = ProjectSite.objects.filter(owner__id=user.id)
args = {}
args.update(csrf(request))
args['users'] = user
args['projects'] = projects
if request.method == 'POST':
project_id = request.POST.get('project_id')
args['project_id']= project_id

return redirect('/view_project/', args,context)
else:
args = {}
args.update(csrf(request))
args['users'] = user
args['projects'] = projects
return render_to_response('Bapp/manage_projects.html', args,context)


def view_project(request, project_id):
context = RequestContext(request)
user = User.objects.get(project_sites__id=project_id)
site = ProjectSite.objects.get(id=project_id)
args = {}
args.update(csrf(request))
args['Users'] = user
args['Project'] = site
return render_to_response('Bapp/view_project.html', args,context)

最佳答案

这应该可以解决您的问题:

from django.shortcuts import redirect
from django.core.urlresolvers import reverse

if request.method == 'POST':
project_id = request.POST.get('project_id')
return redirect(reverse('view_project', args=(project_id,)))

顺便说一句,另一个建议而不是硬编码 URL 路径 Bapp/view_project.html使用 named URL patterns我用过。

关于Django - 根据下拉菜单中的选择将用户重定向到页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24236110/

25 4 0