【问题标题】:why does my link to logout not work in my Django app?为什么我的注销链接在我的 Django 应用程序中不起作用?
【发布时间】:2020-04-04 00:32:24
【问题描述】:

所以我试图在我的 Django 应用程序中创建一个注销链接。我设置了一个注销用户的视图,然后将他重定向到一个模板 paginaPrincinal.html,该模板有两个用于登录和注册的按钮。

问题是由于某种原因,我在 index.html 中创建的链接 href 没有出现。

我的意见.py

def login_view(request):
   if request.method == 'POST':
      form = AuthenticationForm(data=request.POST) 
      if form.is_valid():
         user = form.get_user()
         login(request, user) 
         return redirect('index')
   else:
      form = AuthenticationForm()
   return render(request, 'registration/login.html', {'form': form})

def logout_view(request):
   logout(request)
   return redirect('paginaPrincipal')

我的 urls.py

 path('principal/', views.intro, name='pagina_principal'),
 path('registro/', views.registro_usuario, name='registro_usuario'),
 path('login/', views.login_view, name="login"),
 path('logout/', views.logout_view, name="logout"),
 path('',views.index, name ='index'),

index.html

   {% block contenido %}
   <div>
				<ul>
					{% if user.is_authenticated %}
					<li>Hola, {{user.username}}</li>
					<li><a href="{% url 'logout' %}"></a></li>
					{% endif %}
				</ul>
			</div>
 {% endblock %}

如果我检查代码并尝试转到 Href 时出现的错误是这样的:

NoReverseMatch 在 /myapp2/logout/ 未找到“paginaPrincipal”的反向。 'paginaPrincipal' 不是有效的视图函数或模式名称。

【问题讨论】:

    标签: html django django-templates django-views


    【解决方案1】:

    您传递给redirect 的字符串应该是一个url 路由名称。问题是'paginaPrincipal' != 'pagina_principal'

    def logout_view(request):
       logout(request)
       return redirect('pagina_principal')
    

    这应该可以解决它。

    【讨论】:

      【解决方案2】:

      您正在重定向到"paginaPrincipal",但您已经定义了"pagina_principal"。你必须改变你的视图功能

      def logout_view(request):
         logout(request)
         return redirect('pagina_principal')
      

      【讨论】:

        【解决方案3】:

        NoReverseMatch 意味着你必须在 urls.py 中设置 app_name 之类的

        app_name= "app_name"
        

        在模板中

        <a href="{% url 'app_name:logout' %}"></a>
        

        它应该可以工作

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-06-11
          • 2016-08-28
          • 2013-05-25
          • 2021-10-22
          • 1970-01-01
          • 2021-04-03
          • 2015-06-24
          相关资源
          最近更新 更多