首页 > 解决方案 > 如何在 django 中取消关注 url?

问题描述

我创建了这个简单的代码来了解 django 中的登录和注册。我的views.py是

def index(request):
    products = Product.objects.all()
    return render(request,'index.html',{'products':products})


def register(request):
    return render(request,'register.html')

def login(request):
    return render(request,'login.html')

def logout(request):
    return HttpResponse('logout')

网址.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index),
    path('register/', views.register),
    path('login/', views.login),
    path('logout/', views.logout),
]

base.html

<a href="register">Register</a>
<a href="login/">Login</a>
<h3>Base html </h3>
{% block content %}


{% endblock %}

注册.html

{%extends 'base.html'%}

<h1>Register</h1>

{% block content %}

{% endblock %}

登录.html

{%extends 'base.html'%}

<h1>Login</h1>

{% block content %}

{% endblock %}

http://127.0.0.1:8000/当我点击Register链接时,它会跟随http://127.0.0.1:8000/register页面,但是当我点击该页面的“注册链接”时,它会跟随http://127.0。 0.1:8000/register/register给出 404 错误。我如何取消关注而不是去http://127.0.0.1:8000/register/register它必须去的网址http://127.0.0.1:8000/register/

标签: pythondjangodjango-viewsdjango-templates

解决方案


在你的基地。html 你通常应该指定一个链接{% url 'register' %}

就像这样:

<a href="{% url 'register' %}">Register</a>

但是要使用它,在您的 settings.py 中,您应该指定相对于项目基本目录的模板存储目录

TEMPLATES = [
    {
        ...
        'DIRS': [
            os.path.join(BASE_DIR, 'your/way/to/templates'),
        ],
        ...
] 

同样import os.path在 settings.py 的顶部

编辑

当你指定你的 urls.py 时,你应该给每个 url 命名。

path('register/', views.register, name='register'),

所以在<a href="{% url 'register' %}">Register</a>你调用网址的名称


推荐阅读