Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django动态url_Python_Html_Django - Fatal编程技术网

Python Django动态url

Python 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'

我试图用动态url打开海报内的内容,但我遇到了问题 我的代码用于包含一些电影海报的简单网页,当我单击海报时,新页面中的新模板应打开,该模板将显示此海报的信息

但每当我点击海报时,都会在新页面中打开相同的模板(index.html),而不是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>
乙二醇

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+