如何在Django中使用模板标签调用另一个应用程序中的视图?

3

我在使用模板标签'collab_app:question_list'时,出现错误Reverse for 'question_list' not found. 'question_list'不是有效的视图函数或模式名称。

home.html:

{% extends "_base.html" %} 
{% load static %}
{% load socialaccount %}
{% block title %}Home{% endblock title %} 
{% block content %}
<h1>Homepage</h1>
<a href="{% url 'collab_app:question_list' %}">Ask Question Here</a>
<img class="collabimage" src="{% static 'images/collab.jpg' %}" ><br>
{% if user.is_authenticated %}
  Hi {{ user.email }}
  <p><a href="{% url 'account_logout' %}">Log Out</a></p>
{% else %}
  <p>You are not logged in</p>
  <!--Github-->
  <a href="{% provider_login_url 'github' %}" ><p class="git">Github</p></a>
  <a href="{% url 'account_login' %}">Login</a>
  <a href="{% url 'account_signup' %}">Sign Up</a>
{% endif %}
{% endblock content %}

views.py:

class HomePageView(generic.TemplateView):
    template_name = "home.html"

用户应用程序中的urls.py:

from django.urls import path, include
from .views import SignupPageView
from .views import HomePageView

app_name = "users"

    urlpatterns = [
        path("", HomePageView.as_view(), name="home"),
        path("signup/", SignupPageView.as_view(), name="signup"),
    ]

项目中的urls.py:
from django.contrib import admin
from django.urls import path, include
from users.views import HomePageView


urlpatterns = [
    path("", include("users.urls")),
    path("collab/", include("collab_app.urls"),),  # , "collab_app")),
]

collap_app中的urls.py:

from django.contrib import admin
from django.urls import path, include
from collab_app import views
from users.views import HomePageView

app_name = "collab_app"

urlpatterns = [
    path("", views.QuestionListView.as_view(), name="question-list"),
]

collab_app 中的 view.py:

class QuestionListView(ListView):
    model = Question
    template_name = "collab_app/question_list.html"

你是否在设置中的已安装应用程序中添加了你的应用名称? - bmons
2个回答

1
你将url命名为question-list,但是引用的是question_list,这只是一个打字错误。
请使用{% url 'collab_app:question-list' %}

0
尝试更改。
collap_app 中的 urls.py:
urlpatterns = [
    path("question-list", views.QuestionListView.as_view(), name="question-list"),
]

在 home.html 中

<a href="{% url 'collab_app:question-list' %}">Ask Question Here</a>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接