python - Django url 关键字

标签 python django url

使用以下 Django 代码,我在将 url 关键字传递给模板时遇到问题。

View .py

def index(request,username):
    return render(request,'myaccount.html')

来自项目名称文件夹的 urls.py

urlpatterns = patterns('',
    url(r'^myaccount/',include('myaccount.urls')),
)

来自 myaccount 应用程序的 urls.py

urlpatterns = patterns('',
    url(r'^(?P<username>[a-zA-Z0-9]+)/$','myaccount.views.index',name='myaccount'),
)

问题是,为什么当我使用以下 html 代码时它显示 /myaccount/Jerry/

myaccount.html

    {% url 'myaccount' 'Jerry' %}

但是当我传递关键字时它显示错误

myaccount.html

    {% url 'myaccount' username %}

NoReverseMatch at /myaccount/Jerry/
Reverse for 'myaccount' with arguments '('',)' and keyword arguments '{}' not found.

当我像这样传递变量用户名时,错误得到修复:

def index(request,username):
    return render(request,'myaccount.html',{'username':username})

但是,有没有更快的方法呢?

最佳答案

在您的正则表达式中,您正在捕获一个键/值对,其中键等于用户名。您需要在 url 标记中指定 username='Jerry'。

P < username > 表示捕获以下内容并将其链接到名为 username 的关键字。

{% url 'myaccount' username='Jerry' %}

因此,在您的情况下,如果您没有为反向查找提供关键字参数,它将查找不存在的正则表达式模式。

编辑

这可能会解决您的“更快的方式”问题。您应该尝试使用基于类的 View 。请参阅https://docs.djangoproject.com/en/1.5/ref/class-based-views/base/#django.views.generic.base.TemplateView

如果使用 url 模式->

    url(r'^(?P<somenumber>\d+)/test/$', views.TestView.as_view(), name='testview')

TestView 在views.py 中定义为(请务必在您的url.py 中导入 View )

from django.views.generic import TemplateView
class TestView(TemplateView):
    model = xxxx // link to your model here
    template_name = 'test.html'

在 test.html 模板中,您只需执行此操作

{{ somenumber }}

提取传入参数的值。

TemplateView 的 get_context_data(self, **kwargs) 函数将自动更新模板的上下文,以包含在 url 模式中找到的任何键/值对参数。

事实上,您可以重写此函数并调用 super 来更新模板上下文中所需的任何自定义 k/w 参数。

关于python - Django url 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17620172/

相关文章:

python - Pandas - 比较两个 Csv 数据帧,但一个 csv 有问题

要包含的 Django 传递对象

python - Django 静态设置

http - 关于 URL 的可用性是否有任何安全的假设?

java - 动态更改struts2 url的参数

python - 比较两个字典的字典列表中的特定值

python - 线性回归中MSE和RMSE的计算

python - 有没有办法在 django html 文件中注释掉 python 代码?

javascript - 为 Django 的 NGINX 服务器上的 CSS 和 JS 文件启用 GZIP

php - 通过 url 传递 session ID