Python Django动态url
我试图用动态url打开海报内的内容,但我遇到了问题 我的代码用于包含一些电影海报的简单网页,当我单击海报时,新页面中的新模板应打开,该模板将显示此海报的信息 但每当我点击海报时,都会在新页面中打开相同的模板(index.html),而不是page.htmlPython Django动态url,python,html,django,Python,Html,Django,我试图用动态url打开海报内的内容,但我遇到了问题 我的代码用于包含一些电影海报的简单网页,当我单击海报时,新页面中的新模板应打开,该模板将显示此海报的信息 但每当我点击海报时,都会在新页面中打开相同的模板(index.html),而不是page.html from django.conf.urls import url from.views import poster, poster_page urlpatterns = [ url(r'^',poster), url(r'
from django.conf.urls import url
from.views import poster, poster_page
urlpatterns = [
url(r'^',poster),
url(r'^home/(?P<id>/d+)/$', poster_page),
from django.conf.urls import url, include
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^home/',include('homepage.urls', namespace='home'))
]
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL,
document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL,
document_root=settings.MEDIA_ROOT)
<body>
<div class="row">
{% for poster in pos %}
<div class="col-md-4">
<a href="{{poster.id}}" target="new"><img src="{{ poster.poster_img.url }}" alt="image"><h3>{{ poster.poster_name }}</h3></a>
</div>
{% endfor %}
</div>
<body>
<div class="row">
<img src="{{ poster_img.url }}" alt="image"><h2>{{ poster_name }}</h2>
</div>
<div class="row">
<h2>{{ poster_details }}</h2>
</div>
乙二醇
127.0.0.1:8000/home是一个包含所有海报的网页,我点击了id=1的poster1,然后在新页面中打开127.0.0.1/home/1,但它仍然是index.html,包含所有海报,而不是page.html,其中存储了poster1 id=1的内容
这是我的密码
主页/models.py
from django.db import models
class Poster(models.Model):
poster_name = models.CharField(max_length=20)
poster_img = models.FileField(upload_to="poster_image/")
def __str__(self):
return self.poster_name
class Poster_page(models.Model):
poster = models.ForeignKey(Poster, default= 1)
poster_name = models.CharField(max_length=20)
poster_img = models.FileField()
poster_details = models.TextField()
from django.shortcuts import render_to_response
from .models import Poster, Poster_page
def poster(request):
pos = Poster.objects.all()
return render_to_response('index.html', {'pos':pos})
def poster_page(request, id=1):
poster_pg = Poster_page.objects.all()
return render_to_response('page.html', {'poster_pg':poster_pg})
主页/views.py
from django.db import models
class Poster(models.Model):
poster_name = models.CharField(max_length=20)
poster_img = models.FileField(upload_to="poster_image/")
def __str__(self):
return self.poster_name
class Poster_page(models.Model):
poster = models.ForeignKey(Poster, default= 1)
poster_name = models.CharField(max_length=20)
poster_img = models.FileField()
poster_details = models.TextField()
from django.shortcuts import render_to_response
from .models import Poster, Poster_page
def poster(request):
pos = Poster.objects.all()
return render_to_response('index.html', {'pos':pos})
def poster_page(request, id=1):
poster_pg = Poster_page.objects.all()
return render_to_response('page.html', {'poster_pg':poster_pg})
主页。url
from django.conf.urls import url
from.views import poster, poster_page
urlpatterns = [
url(r'^',poster),
url(r'^home/(?P<id>/d+)/$', poster_page),
from django.conf.urls import url, include
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^home/',include('homepage.urls', namespace='home'))
]
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL,
document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL,
document_root=settings.MEDIA_ROOT)
<body>
<div class="row">
{% for poster in pos %}
<div class="col-md-4">
<a href="{{poster.id}}" target="new"><img src="{{ poster.poster_img.url }}" alt="image"><h3>{{ poster.poster_name }}</h3></a>
</div>
{% endfor %}
</div>
<body>
<div class="row">
<img src="{{ poster_img.url }}" alt="image"><h2>{{ poster_name }}</h2>
</div>
<div class="row">
<h2>{{ poster_details }}</h2>
</div>
index.html
from django.conf.urls import url
from.views import poster, poster_page
urlpatterns = [
url(r'^',poster),
url(r'^home/(?P<id>/d+)/$', poster_page),
from django.conf.urls import url, include
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^home/',include('homepage.urls', namespace='home'))
]
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL,
document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL,
document_root=settings.MEDIA_ROOT)
<body>
<div class="row">
{% for poster in pos %}
<div class="col-md-4">
<a href="{{poster.id}}" target="new"><img src="{{ poster.poster_img.url }}" alt="image"><h3>{{ poster.poster_name }}</h3></a>
</div>
{% endfor %}
</div>
<body>
<div class="row">
<img src="{{ poster_img.url }}" alt="image"><h2>{{ poster_name }}</h2>
</div>
<div class="row">
<h2>{{ poster_details }}</h2>
</div>
{%用于pos%中的海报}
{%endfor%}
page.html
from django.conf.urls import url
from.views import poster, poster_page
urlpatterns = [
url(r'^',poster),
url(r'^home/(?P<id>/d+)/$', poster_page),
from django.conf.urls import url, include
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^home/',include('homepage.urls', namespace='home'))
]
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL,
document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL,
document_root=settings.MEDIA_ROOT)
<body>
<div class="row">
{% for poster in pos %}
<div class="col-md-4">
<a href="{{poster.id}}" target="new"><img src="{{ poster.poster_img.url }}" alt="image"><h3>{{ poster.poster_name }}</h3></a>
</div>
{% endfor %}
</div>
<body>
<div class="row">
<img src="{{ poster_img.url }}" alt="image"><h2>{{ poster_name }}</h2>
</div>
<div class="row">
<h2>{{ poster_details }}</h2>
</div>
{{海报名称}
{{海报详细信息}
主页。url 将
d/+
替换为\d+
是的,您还需要在index.html中
您没有在href中定义正确的url来打开海报详细信息
正确的语法如下所示:
<a href="home/{{poster.id}}" target="new"><img src="{{ poster.poster_img.url }}" alt="image"><h3>{{ poster.poster_name }}</h3></a>
我认为问题在于视图中的上下文变量-
return render_to_response('index.html', {'pos':pos})
应该是-
return render_to_response('index.html', {'poster':pos})
因为在你调用索引模板中的{{{poster.id}}
。它不工作,当我尝试127.0.0.1:8000/home/home/1地址在新页面中打开不工作时,127.0.0.1:8000/home/home/1在新选项卡中打开现在只需检查一下。我在回家之前错过了一个
。不工作,127.0.0.1:8000/home/1已打开,但未显示页面。html再次显示索引。html现在再次检查主页中的URL。改为/d+
它应为\d+
。