找不到“”的反转。 “”不是有效的视图函数或模式名称

问题描述 投票:0回答:2

我是 django 的初学者,当我从 youtube 学习 dajngo 时,我遇到了这个问题,注意我一步一步地做每件事,比如课程,我搜索了这个问题的解决方案几个小时,但我没有找到任何东西。 当我动态传递 url 时,它会导致问题:

反向找不到“房间”。 “room”不是有效的视图函数或模式名称。

home.html

{% extends "main.html" %}


{% block content %}
<h1>Home Template</h1>

<div>
    <div>
        {% for room in rooms %}
            <div>
                 <h3>{{ room.id }} -- <a href="{% url 'room' room.id %}">{{ room.name }}</h3></a>
            </div>
        {% endfor %}
    </div>
</div>
    
{% endblock %}

房间.html

{% extends 'main.html' %}


{% block content %}

<h1>Room Page </h1>

<h1>{{ room_r.name }}</h1>
    
{% endblock content %}
    

views.py

from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.

rooms = [
    {'id': 1, 'name': 'lets learn python!'},
    {'id': 2, 'name': 'Desgin with me'},
    {'id': 3, 'name': 'Frontend developer'},
]

def home(request):
    context = {'rooms': rooms}
    return render(request, 'base/home.html', context)

def room(request, pk):
    room = None
    for i in rooms:
        if i['id'] == int(pk):
            room = i
        
    context = {'room_r': room}
    return render(request, 'base/room.html',context)

url.py

from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.

rooms = [
    {'id': 1, 'name': 'lets learn python!'},
    {'id': 2, 'name': 'Desgin with me'},
    {'id': 3, 'name': 'Frontend developer'},
]

def home(request):
    context = {'rooms': rooms}
    return render(request, 'base/home.html', context)

def room(request, pk):
    room = None
    for i in rooms:
        if i['id'] == int(pk):
            room = i
        
    context = {'room_r': room}
    return render(request, 'base/room.html',context)
python django django-templates django-urls
2个回答
0
投票

您是否在项目的网址上添加了名称?

urlpatterns = [
    path('', views.home, name="home"),
    path('room/<str:pk>/', views.room, name="room")
]

请确保您在路由室上的 URL 项目具有参考名称。检查此文档https://docs.djangoproject.com/en/5.0/topics/http/urls/#examples


-1
投票

对于像这样使用 url 的应用程序,您应该指定名称(如果该应用程序位于该应用程序的“urls.py”内),并且您应该为每个路径指定一个名称

room_app/urls.py

app_name = 'room'

urlpatterns = [
    path('', index, name='index'), 
    #your index view
]

然后在你的html文件中使用像这样的url:

<a href="{% url 'room:index' room.id %}">{{ room.name }}</a>

记住“房间”是应用程序名称 | 'index' 是网址名称

© www.soinside.com 2019 - 2024. All rights reserved.