我正在用多个应用程序创建一个Django项目,因此有多个urls.py文件。我正在尝试将一个用于用户帐户的应用程序添加到一个具有商店,购物车和订单应用程序的项目中。具体来说,我想将帐户/页面链接回商店

主要urls.py:

urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^account/', include('account.urls')),
url(r'^cart/', include('cart.urls', namespace='cart')),
url(r'^orders/', include('orders.urls', namespace='orders')),
url(r'^', include('shop.urls', namespace='shop')),
]


Urls.py用于帐户/:

urlpatterns = [

url(r'^login/$', 'django.contrib.auth.views.login', name='login'),
url(r'^logout/$', 'django.contrib.auth.views.logout', name='logout'),
url(r'^logout-then-login/$', 'django.contrib.auth.views.logout_then_login',name='logout_then_login'),
url(r'^register/$', views.register, name='register'),
url(r'^$', views.dashboard, name='dashboard'),

]


这是我用于帐户页面的模板



{% load staticfiles %}
<!DOCTYPE html>
<html>
<head>
  <title>{% block title %}{% endblock %}</title>
  <link href="{% static "css/base.css" %}" rel="stylesheet">
</head>
<body>
  <div id="header">
    <span class="logo">Rachel's Stuff</span>

    {% if request.user.is_authenticated %}
      <ul class="menu">
        <li {% if section == "dashboard" %}class="selected"{% endif %}>
          <a href="{% url "dashboard" %}">My dashboard</a>
        </li>
        <li {% if section == "images" %}class="selected"{% endif %}>
          <a href="{% url 'shop' %}">Home</a>
        </li>
        <li {% if section == "people" %}class="selected"{% endif %}>
          <a href="#">People</a>
        </li>
      </ul>
    {% endif %}

    <span class="user">
      {% if request.user.is_authenticated %}
        Hello {{ request.user.first_name }},
        <a href="{% url "logout" %}">Logout</a>
      {% else %}
        <a href="{% url "login" %}">Log-in</a>
      {% endif %}
    </span>
  </div>
  <div id="content">
    {% block content %}
    {% endblock %}
  </div>
</body>
</html>





在这里,我想从127.0.0.1:8000/account/链接回默认为主店面的http://127.0.0.1:8000

<li {% if section == "images" %}class="selected"{% endif %}>
      <a href="{% url 'shop' %}">Home</a>
</li>


但是我得到一个错误:


  找不到带有参数“()”和关键字参数“ {}”的“ shop”。尝试了0个模式:[]
  
  请求方法:GET
  
  请求网址:http://127.0.0.1:8000/account/
  
  Django版本:1.8.6
  
  异常类型:NoReverseMatch
  
  异常值:
  反向查找'shop',但未找到参数'()'和关键字参数'{}'。尝试了0个模式:[]


当我已经在帐户名称空间中时,如何链接回主商店页面(127.0.0.1:8000/)?抱歉,如果我使用任何错误的术语。

最佳答案

您使用错误的URL名称(shop)进行了反向。查看shop/urls.py文件,并查看^$路径的实际名称。由于已经定义了名称空间,因此应将其反转为shop:<your url name here>

08-04 00:30
查看更多