Skip to main content
 首页 » 编程设计

python之Django之链接到同一项目中不同应用程序的网址

2024年10月01日30lhb25

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

主要 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> 

但是我得到一个错误:

Reverse for 'shop' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []

Request Method: GET

Request URL: http://127.0.0.1:8000/account/

Django Version: 1.8.6

Exception Type: NoReverseMatch

Exception Value:
Reverse for 'shop' with arguments '()' and keyword arguments '{}' not >found. 0 pattern(s) tried: []

当我已经在帐户命名空间中时,如何链接回主商店页面 (127.0.0.1:8000/)?对不起,如果我用错了任何术语。

请您参考如下方法:

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