繁体   English   中英

Django url模板标签:'module'对象没有属性'views'

[英]Django url template tag: 'module' object has no attribute 'views'

有问题的标签:

< a href="{% url django.contrib.auth.views.login %}">Login< /a>

URL配置:

from django.contrib.auth import views <br />
...<br />
(r'^login/$',views.login, {'redirect_field_name' : '/' })
<br />...

最好使用命名网址,它们将来会节省大量维护工作并首先打字。

如果您保持网址的名称相同,您可以重命名视图功能,将其移动到其他应用程序等,您根本不需要使用此网址更改模板或其他位置。

在urls.py中:

url(r'^login/',path.to.view,name='login',...)

在模板中:

<a href="{%url login%}">login here</a>

在观点中:

login_url = reverse('login')

出于某种原因,它不喜欢我导入它的方式。

解:

from django.contrib.auth.views import login

(r'^login', login, etc.)

我相信我有一些事情要为这个问题做出贡献。

对我来说很奇怪的是,我的代码在我使用它的方式上是有道理的,但它不起作用。

如果在我的网址中我尝试了以下内容。 helloworld是我的django app名称。

import helloworld
...
url(r'^test', helloworld.views.home1() , name='home'),

它会产生错误。 即使技术上每件事都是正确的。 我导入了我的应用程序,这是一个由django manage startapp自动创建的python模块

module' object has no attribute 'views'

我在github上找到了django项目站点的源代码,看看他们如何在他们的app的url部分进行导入。 去看看github上的这个项目吧。 它是大规模项目实施的极好参考。 那里有很多值得学习的地方。 https://github.com/django/djangoproject.com

这是他们进行导入和url配置的方式。

from accounts import views as account_views
...
url(r'^~(?P<username>[\w-]+)/$', account_views.user_profile, name='user_profile'),

所以我将代码修改为类似的东西

import helloworld.views as helloView
...
url(r'^test', helloView.home1 , name='home'),

这很可能与app / project / python命名空间有关。 我不完全确定。 但是我的代码按预期工作,我仍然可以在各自的命名空间中拥有不同的应用程序。 我只需要确保import app.view as somename在app / project / python命名空间方案中是唯一的。

暂无
暂无

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

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