这是我第一次使用Django登录模板,遇到了一个问题。它一直提示login不是有效的视图函数,但我在我的用户应用程序的urls.py中定义了它:
![enter image description here](https://istack.dev59.com/YBcxU.webp)
![enter image description here](https://istack.dev59.com/4pErt.webp)
不确定我做错了什么。
主urls.py
![enter image description here](https://istack.dev59.com/YBcxU.webp)
![enter image description here](https://istack.dev59.com/4pErt.webp)
不确定我做错了什么。
主urls.py
urlpatterns = [
path('', include('blogging_logs.urls', namespace='blogging_logs')),
path('users/', include('users.urls', namespace='users')),
path('admin/', admin.site.urls),
]
应用程序:blogging_logs:base.html
<p>
<a href="{% url 'blogging_logs:index' %}">Home</a>
<a href="{% url 'blogging_logs:categories' %}">Categories</a>
{% if user.is_authenticated %}
Hello, {{ user.username }}.
{% else %}
<a href="{% url 'users:login' %}"> login in</a>
{% endif %}
</p>
{% block content %}{% endblock content %}
应用程序: 用户: urls.py
from django.contrib import admin
from django.urls import re_path, path
from django.contrib.auth import authenticate, login
from django.contrib.auth import views as auth_views
app_name = 'users'
urlpatterns = [
# Login Page
path('login/', auth_views.LoginView.as_view(template_name='login.html')),
]
应用程序:用户:登录页面
{% extends "blogging_logs/base.html" %}
{% block content %}
{% if form.errors %}
<p>Your username and password din't match. Please try again.</p>
{% endif %}
<form class="" method="post" action="{% url 'users:login' %}" >
{% csrf_token %}
{{ form.as_p }}
<button name='submit'> Login in </button>
<input type="hidden" name="next" value="{% url 'blogging_logs:index' %}" />
</form>
{% endblock content %}
include()
的时候才需要使用namespace
,因为这可以是多个路由共享的命名空间。单个路由只有一个name
。在命名空间内部的路由通过namespace:name
引用。 - trixnuser
。 - Selcuk