代码之家  ›  专栏  ›  技术社区  ›  SapphireSun

django url template标记:“module”对象没有属性“views”

  •  4
  • SapphireSun  · 技术社区  · 15 年前

    有问题的标签:

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

    URLConf:

    from django.contrib.auth import views <br />
    ...<br />
    (r'^login/$',views.login, {'redirect_field_name' : '/' })
    <br />...
    
    3 回复  |  直到 8 年前
        1
  •  5
  •   Evgeny    15 年前

    最好使用命名的URL,它们可以在将来节省大量的维护工作并首先输入。

    如果URL名称保持不变,则可以重命名视图函数,将其移动到其他应用程序等。您根本不需要使用此URL更改模板或其他位置。

    在ULLS.PY:

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

    模板中:

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

    观点:

    login_url = reverse('login')
    
        2
  •  4
  •   Selcuk    8 年前

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

    解决方案:

    from django.contrib.auth.views import login
    
    (r'^login', login, etc.)
    
        3
  •  0
  •   nelaaro    10 年前

    我相信我对这个问题有贡献。

    奇怪的是,我的代码在我使用它的方式上是有意义的,但它不起作用。

    如果在我的URL中,我尝试了以下操作。其中helloworld是我的django应用程序名。

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

    它会产生一个错误。尽管从技术上讲每件事都是正确的。我已经导入了我的应用程序,它是由 django manage startapp

    module' object has no attribute 'views'
    

    我找到了 django project site 在Github上,查看了如何在应用程序的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命名空间方案中是唯一的。