python - 如何在 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/
?
解决方案
在你的基地。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>
你调用网址的名称
推荐阅读
- excel - 用户表单输入后锁定单元格
- canape - 脚本在 stadout 中返回一个值,但无法在返回参数中获取值
- scala - 如何在 mockito-scala 中指定超时后模拟没有交互?
- android - Kotlin 中的 JobCancellationException UndispatchedCoroutine 错误
- html - 我正在尝试使用打字稿更改按钮的样式
- laravel - 在 Google Cloud Platform 上部署 Laraval 应用程序 - 问题
- php - 从其他页面推迟联系表格 7 脚本和 css
- android - TableView Appcelerator Titanium 的元素不响应 Android 中的点击
- android - 如何在 Flutter 中删除带有风味的版本上的调试横幅?
- c# - EPPLUS 将数据从 excel 导出到 word 文档