我正在学习Django,并为自己做一个项目。
项目简介:这是一个旅行应用程序,用户必须在其中选择目的地。目的地将由管理员/超级用户从“管理”面板添加。
现在,我可以从“管理”面板动态添加目录。
我想要的是:当用户单击特定的目标位置时,应打开目标页面。因为内容来自数据库(也就是说,如果数据库中有1行,它将显示1个目标)。
现在我想知道如何根据可用的内容创建网页?
Image of the code snippet of the destination
在“ destinations.html”中,我应该添加些什么,以便它在添加新的目标位置时创建一个页面,以及为该页面创建一个动态URL。
例如我有1个目的地,当我单击它时,它将打开目的地的页面(可以通过创建新的视图对象来完成)。但是,假设我添加了一个新的目的地,它将为该第二个目的地创建一个页面。
答案 0 :(得分:0)
足够简单,使用url标记
即这是您的URLconf:
from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.IndexView, name = 'home'),
path('<dest_name>', views.DestinationView, name = 'destination')
]
您的views.py
from django.shortcuts import render
from .models import *
# Create your views here.
def IndexView(request):
destinations = Destinations.objects.all()
context = {'destinations': destinations}
return render(request, 'index.html', context)
def DestinationView(request, dest_name):
destination = get_object_or_404(Destinations, name = dest_name)
context = {'destination': destination}
return render(request, 'destination.html', context)
您的index.html
:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Home</title>
</head>
<body>
{% for dest in destinations %}
<a href = '{% url 'destination' dest.name %}'>{{dest.name}}</a>
{% endfor %}
</body>
</html>
我在url标记中添加的dest.name
将替换dest_name
,而destination
是我在urls.py
中分配的名称
希望能解决您的问题