简体   繁体   English

从 django 模板 href 链接传递多个参数以查看

[英]Passing multiple arguments from django template href link to view

I am trying to pass some arguments with a link url href in a template to a view.我试图将模板中带有链接 url href 的一些参数传递给视图。

In my template :在我的模板中:

 <a href="/print-permission-document/ studentname={{studentinfo.0}} studentsurname={{studentinfo.1}} studentclass={{studentinfo.2}} doctype=doctype-studentlatepermission">Print</a>

So i am trying to pass 4 arguments to my view.所以我试图将 4 个参数传递给我的视图。

My view is :我的观点是:

def print_permission_document(request, studentname, studentsurname, studentclass, doctype):
file_write(studentname.encode('utf-8')+" "+studentsurname.encode('utf-8')+" "+studentclass+" "+doctype)
return response

My urls.py is :我的 urls.py 是:

url(r'^print-permission-document/.+$', print_permission_document, name='print-permission-document')

But i get below error :但我得到以下错误:

Exception Type: TypeError Exception Value:异常类型:TypeError 异常值:
print_permission_document() takes exactly 5 arguments (1 given) print_permission_document() 正好需要 5 个参数(给定 1 个)

This is not how you specify multiple parameters in a URL, typically you write these in the URL, like:不是您在 URL 中指定多个参数的方式,通常您在 URL 中编写这些参数,例如:

url(
    r'^print-permission-document/(?P<studentname>\w+)/(?P<studentsurname>\w+)/(?P<studentclass>\w+)/(?P<doctype>[\w-]+)/$',
    print_permission_document, name='print-permission-document'
)

Then you generate the corresponding URL with:然后使用以下命令生成相应的 URL:

<a href="{% url 'print-permission-document' studentname=studentinfo.0 studentsurname=studentinfo.1 studentclass=studentinfo.2 doctype='doctype-studentlatepermission' %}">Print</a>

This will then generate a URL that looks like:这将生成一个如下所示的 URL:

/print-permission-document/somename/someclass/doctype-studentlatepermission

Typically a path does not contain key-value pairs, and if it does, you will need to "decode" these yourself.通常,路径包含键值对的,如果是的话,你将需要“解码”这些你自己。

You can also generate a querystring (after the question mark), these you can then access in request.GET [Django-doc] .您还可以生成一个查询字符串(在问号之后),然后您可以在request.GET [Django-doc] 中访问这些字符串

You are passing your URL wrongly.您错误地传递了您的网址。 and URL in template is also declared wrongly.并且模板中的 URL 也被错误地声明。

Try this尝试这个

<a href="{% url 'print-permission-document' studentinfo1, studentinfo2, ... %}">Print</a>

url(
    r'^print-permission-document/(?P<studentname>\w+)/(?P<studentsurname>\w+)/(?P<studentclass>\w+)/(?P<doctype>\w+)/$',
    print_permission_document, name='print-permission-document'
)

I had the same error , i corrected it by :我有同样的错误,我通过以下方式纠正了它:

url(r'^auth_app/remove_user/(?P<username2>[-\w]+)/$', views.remove_user, name="remove_user"),

Use this pattern for passing string使用此模式传递字符串

(?P<username2>[-\w]+)

This for interger value这是整数值

(?P<user_id>[0-9]+)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM