微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Django消息未显示在重定向中,仅呈现

如何解决Django消息未显示在重定向中,仅呈现

几天来,我一直在试图弄清为什么我的消息没有显示重定向中。如您所见,所有依赖项都在我的settings.py文件中。我不认为这是问题所在,因为如果用户的密码在注册时不匹配或者用户登录时输入了错误的密码,则在注册登录时会收到两条消息。我注意到它仅适用于渲染,不适用于重定向。接下来,我将发布文件结构的图像以及相关文件

文件结构图像:

image 1 book tree

image 2 members and main tree

settings.py

from django.contrib.messages import constants as messages

MESSAGE_TAGS = {
    messages.DEBUG: 'alert-info',messages.INFO: 'alert-info',messages.SUCCESS: 'alert-success',messages.WARNING: 'alert-warning',messages.ERROR: 'alert-danger',}

INSTALLED_APPS = [
    ...
    'django.contrib.messages',...
]

MIDDLEWARE = [
    ...
    'django.contrib.sessions.middleware.SessionMiddleware',...
    'django.contrib.messages.middleware.MessageMiddleware',...
]

TEMPLATES = [
   ...
            'context_processors': [
                ...
                'django.contrib.messages.context_processors.messages',],},]

我的urls.py文件夹中的virtual_library

from django.contrib import admin
from django.urls import path,include
from django.conf import settings
from django.conf.urls.static import static
from book.views import *

urlpatterns = [
    path('admin/',admin.site.urls),# Book paths
    path('',include('book.urls')),# Added Django authentication system after adding members app
    path('members/',include('django.contrib.auth.urls')),path('members/',include('members.urls')),]+ static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)

我的urls.pybook文件夹中

from django.contrib import admin
from django.urls import path,include
from django.conf import settings
from django.conf.urls.static import static
from .views import *
from book import views

urlpatterns = [
    # Default path
    path('',views.home,name='home'),# Book paths
    path('create/',views.createbook,name='createbook'),path('current/',views.currentbooks,name='currentbooks'),path('wanttoread/',views.wanttoreadbooks,name='wanttoreadbooks'),path('currentlyreading/',views.currentlyreading,name='currentlyreading'),path('read/',views.read,name='read'),path('book/<int:book_pk>',views.viewbook,name='viewbook'),path('book/<int:book_pk>/editbook',views.editbook,name='editbook'),path('book/<int:book_pk>/viewonly',views.viewonly,name='viewonly'),path('book/<int:book_pk>/delete',views.deletebook,name='deletebook'),# Genres
    path('genre/',AddGenreView.as_view(),name='addgenre'),]

我的urls.pymembers文件夹中


from django.contrib import admin
from django.urls import path
from django.conf import settings
from django.contrib.auth import views as auth_views
from django.conf.urls.static import static
from members import views
from . import views
from .views import UserEditView,CreateProfilePageView,ShowProfilePageView,EditProfilePageView,PasswordsChangeView

urlpatterns = [
    # User auth
    path('signupuser/',views.signupuser,name='signupuser'),path('loginuser/',views.loginuser,name='loginuser'),path('logoutuser/',views.logoutuser,name='logoutuser'),# User settings
    path('edit_settings/',UserEditView.as_view(),name='edit_settings'),# path('password/',auth_views.PasswordChangeView.as_view(template_name='registration/change_password.html')),path('password/',PasswordsChangeView.as_view(template_name='registration/change_password.html')),path('password_success/',views.password_success,name="password_success"),# User profile
    path('create_profile_page/',CreateProfilePageView.as_view(),name='create_profile_page'),path('<int:pk>/edit_profile_page/',EditProfilePageView.as_view(),name='edit_profile_page'),path('<int:pk>/profile/',ShowProfilePageView.as_view(),name='show_profile_page'),]

{。{1}}文件夹中的base.html

book

我的 <div class="container mt-5"> {% for message in messages %} <div class="container-fluid p-0"> <div class="alert {{ message.tags }} alert-dismissible" role="alert"> <button type="button" class="close" data-dismiss="alert" aria-label="Close"> <span aria-hidden="true">&times;</span> </button> {{ message }} </div> </div> {% endfor %} {% block content %}{% endblock %} </div> 模板可以查看currentbooks.html文件夹中的用户书籍

book

{% extends "book/base.html" %} {% load static %} { % block title % } Your Books { % endblock % } {% block content %} <div class="row justify-content-center mt-5"> <div class="col-md-10"> <h1>{% if book_list %} {{ book_list.count }} total book{{ book_list.count|pluralize }} in your Mibrary...</h1> </div> </div> <div class="row justify-content-center mt-5"> <div class="col-md-10"> {% if page_obj %} <div class="container mt-1"> {% for book in page_obj %} <div class="card-body"> {% if book.book_img %} <img src="{{ book.book_img.url }}" alt="{{ book.title }}" class="img-fluid" style="height:150px; width:100px"> {% else %} <img src="{% static 'book/images/logo.png' %}" alt="{{ book.title }}" class="img-fluid" style="height:150px; width:100px"> {% endif %} <blockquote class="blockquote mt-3"> <a href="{% url 'viewonly' book.id %}"> <strong><p class="mb-0">{{ book.title|capfirst }}</p></strong> </a> <p class="mb-0">{% if book.summary %}{{ book.summary|truncatechars:80|safe }}{% endif %}</p> </blockquote> <footer class="blockquote-footer">by <cite title="Source Title">{{ book.author }}</cite></footer> <small><p class="mb-0"><em>{{ book.user }}</em></p></small> </div> <hr> {% endfor %} <div class="pagination"> <span class="step-links mr-2"> {% if page_obj.has_prevIoUs %} <a href="?page=1">&laquo; first</a> <a href="?page={{ page_obj.prevIoUs_page_number }}">prevIoUs</a> {% endif %} <span class="current mr-2"> Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }} </span> {% if page_obj.has_next %} <a href="?page={{ page_obj.next_page_number }}">next</a> <a href="?page={{ page_obj.paginator.num_pages }}">last &raquo;</a> {% endif %} </span> </div> </div> {% endif %} {% else %} <div class="row"> <div class="col mt-5"> <a role="button" class="btn btn-outline-primary btn-lg" href="{% url 'createbook' %}">Add book</a> </div> <div class="col"> <h2>You haven't added any books yet...</h2> <br> <img src="../static/book/images/reading-list.svg" class="img-fluid mt-3" style="width:400px;" alt="Responsive image" title="stack of books"> </div> </div> </div> {% endif %} {% endblock %} for views.py

currentbooks

我的from django.contrib import messages ... @login_required def currentbooks(request): book_list = Book.objects.filter(user=request.user) paginator = Paginator(book_list,2) page_number = request.GET.get('page') page_obj = paginator.get_page(page_number) return render(request,'book/currentbooks.html',{'page_obj': page_obj,'book_list': book_list}) 将书添加createbook.html文件夹中

book

我要在{% extends 'book/base.html' %} {% block title %} Add Book{% endblock %} {% block content %} <div class="container mt-5"> <h1>Create Book...</h1> </div> <div class="form-group mt-3"> <form method="POST" enctype="multipart/form-data"> {% csrf_token %} {{ error }} {{ form.media }} {{ form.as_p }} <button type="submit" class="btn btn-primary">Save</button> <button type="button" class="btn btn-outline-warning" onclick="$('#cancel').click()">Cancel</button> </form> <form style='display: none;' method="POST" action="{% url 'currentbooks' %}"> {% csrf_token %} <button id="cancel" type="submit">Cancel</button> </form> </form> </div> {% endblock %} 文件夹中删除editbook.html视图

book

{% extends "book/base.html" %} {% block title %} Edit Book {% endblock %} {% block content %} {% if user.id == book.user_id %} <div class="container mt-5"> <h1>Edit Book...</h1> {% if error %} <div class="alert alert-danger" role="alert"> {{ error }} </div> {% endif %} </div> <div class="form-group mt-3"> <form method="POST" enctype="multipart/form-data"> {% csrf_token %} {{ form.media }} {{ form.as_p }} <button type="submit" class="btn btn-primary">Save</button> <button type="button" class="btn btn-warning" onclick="$('#cancel').click()">Cancel</button> <button type="button" class="btn btn-danger" onclick="$('#delete').click()">Delete</button> </form> <form style='display: none;' method="POST" action="{% url 'deletebook' book.id %}"> {% csrf_token %} <button id="delete" type="submit">Delete</button> </form> <form style='display: none;' method="POST" action="{% url 'currentbooks' %}"> {% csrf_token %} <button id="cancel" type="submit">Cancel</button> </form> </div> {% else %} <div class="row justify-content-center mt-5"> <h1>You are not allowed to edit this book...</h1> </div> {% endif %} {% endblock %} views.py文件夹中

book

我的from django.contrib import messages ... # Create @login_required def createbook(request): if request.method == 'GET': form = BookForm() return render(request,'book/createbook.html',{'form': form}) else: try: form = BookForm(request.POST,request.FILES) newbook = form.save(commit=False) newbook.user = request.user if form.is_valid(): newbook.save() # This message does not show up under the redirect messages.success(request,'Book saved!') return redirect('currentbooks') except ValueError: messages.error(request,'Bad data passed in. Try again.') return render(request,{'form':BookForm()}) # Delete @login_required def deletebook(request,book_pk): book = get_object_or_404(Book,pk=book_pk,user=request.user) if request.method == 'POST': book.delete() # This message does not show up under redirect messages.info(request,'Book deleted!') return redirect('currentbooks') 登录loginuser.html文件

members

{% extends 'book/base.html' %} {% block title %} Login {% endblock %} {% block content %} <div class="container"> <h1>User Login...</h1> <div class="row"> <div class="col mt-5"> <form method="POST"> <div class="form-group"> {% csrf_token %} {{ error }} <div class="form-group"> <label for="username">Username</label> <input type="text" name="username" class="form-control" id="username" aria-describedby="usernameHelp"> </div> <div class="form-group"> <label for="password">Password</label> <input type="password" name="password" class="form-control" id="password"> </div> </div> <div class="form-group"> <button type="submit" class="btn btn-outline-danger btn-lg">Sign In</button> </div> </form> </div> <div class="col"> <img src="../../static/book/images/studying.svg" class="img-fluid" alt="Responsive image" title="woman reading II"> </div> </div> </div> {% endblock %} views.py文件夹中

members

因此,最终,这些消息似乎不适用于重定向,但是如果我呈现并声明文件夹和模板名称,则它们确实起作用。否则,如果存在重定向,则不会显示任何消息。我不太确定是哪里出了问题,或者为什么重定向无法处理这些消息。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。