多参数url模式django 2.0

新手上路,请多包涵

我想在我的 url 模式中传递两个参数,但我收到错误 no-reverse match ie ‘projects’。虽然它只用一个参数就可以正常工作。

这是主要的 urls 文件-

 urlpatterns = [
    path('admin/', admin.site.urls),
    path(r'^materials/(?P<name>(\s+)/',include('materials.urls')),
    path(r'^projects/',include('projects.urls')),
]

projects.urls-

 urlpatterns = [
path('',views.view_projects,name='view_projects'),
path('(?<projectid>\d+)/',views.project_steps,name='project_steps'),
path('(P<projectid>\d+)/(P<stepid>\d+)/',views.project_steps,
name='project_steps'),
]

views.py-

  def view_projects(request):
   projects = project.objects.all
   return render(request,'projects/project_view.html',
   {'projects':projects})

def project_steps(request,projectid,stepno=1):
  projects = project.objects.all
  stepss = steps.objects.all
  return render(request,'projects/project_steps.html',
  {'projectid':projectid,'steps':stepss,'projects':projects,
  'stepno':stepno})

模板-

  "{% url 'projects' projectid=project.id stepno=step.step_no %}"

原文由 user9723456 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 469
2 个回答

您可以执行以下操作。

 Old Way
(r'^view_url/(\d+)/(\d+)$', r'app_name.views.view_function'),
def view_function(request, param1, param2):
    """
    :param request:
    :param param1:
    :param param2:
    :return:
    """
    return render('/* template path and parameters */')

New Way
(r'^view_url/<int:param1>/<int:param2>$', r'app_name.views.view_function'),
def view_function(request, param1, param2):
    """
    :param request:
    :param param1:
    :param param2:
    :return:
    """
    return render('/* template path and parameters */')

有关 django 2.0 中正则表达式模式的更多详细信息,您可以查看 django 文档链接。 https://docs.djangoproject.com/en/2.1/topics/http/urls/

原文由 Lavanya Pant 发布,翻译遵循 CC BY-SA 4.0 许可协议

无需正则表达式匹配或额外的模型字段即可使其工作。

urls.py

 path('custom_page/<str:id1>/<str:id2>/', views.custom_page, name='custom_page'),

views.py

 def custom_page(request, id1, id2):
    #use in view func or pass to template via context
    context = {}
    context['id1'] = id1
    context['id2'] = id2
    return render(request, 'custom_page.html', context=context)

custom_page.html

 <div>{{id1}} {{id2}}</div>

原文由 philmaweb 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进