多个参数url模式django 2.0 [英] multiple parameters url pattern django 2.0

查看:61
本文介绍了多个参数url模式django 2.0的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在我的url模式中传递两个参数,但是我遇到了错误,即项目".

这是主网址文件-

  urlpatterns = [路径("admin/",admin.site.urls),路径(r'^ materials/(?P< name>(\ s +)/',include('materials.urls')),路径(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):项目= project.objects.all返回render(request,'projects/project_view.html',{'projects':projects})def project_steps(request,projectid,stepno = 1):项目= project.objects.allstepss = steps.objects.all返回render(request,'projects/project_steps.html',{'projectid':projectid,'steps':stepss,'projects':projects,'stepno':stepno}) 

模板-

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

解决方案

您可以执行以下操作.

 旧方法(r'^ view_url/(\ d +)/(\ d +)$',r'app_name.views.view_function'),def view_function(request,param1,param2):":param请求::param param1::param param2::返回:"返回render('/*模板路径和参数*/')新的方法(r'^ view_url/< int:param1>/< int:param2> $',r'app_name.views.view_function'),def view_function(request,param1,param2):":param请求::param param1::param param2::返回:"返回render('/*模板路径和参数*/') 

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

I want to pass two parameters in my url pattern but i am getting error no-reverse match i.e 'projects'.While it works fine with only one parameter.

here is main urls file-

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})

template-

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

解决方案

You can do something as below.

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 */')

For more details regex pattern in django 2.0 you can check django documentation link. https://docs.djangoproject.com/en/2.1/topics/http/urls/

这篇关于多个参数url模式django 2.0的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆