我是Python和Django的新手,我已经阅读了构建博客的教程,我已经完成了另一个基于啤酒和啤酒厂构建页面的教程。
在完成这项工作的同时,我开始了自己的项目。第一页列出了一些带链接的状态,这些状态转到第二页,其中列出了这些州内的特定城市。
从那里我想链接到与该城市相关的第三个网站特定项目。前两页效果很好。然而,当我点击城市名称时,无论我尝试过什么,我都会得到一个空白页面。
我不能为我的生活弄清楚我哪里出错了。我不认为我完全理解从views.py到urls.py到html的变量流。
也许有人可以就我出错的地方给我一些指导。请再次耐心等待,因为我对Django非常陌生并对Python有一个简单的把握。
class Meta(models.Model):
rcabbr = models.CharField(max_length = 15)
slug = models.SlugField(unique=False)
state = models.ForeignKey('State')
rc_state = models.CharField(max_length = 3)
oerp = models.CharField(max_length=18)
subgrp = models.SlugField()
sonus_pic = models.CharField(max_length=8)
ems = models.CharField(max_length=14)
agc = models.CharField(max_length=14)
def __unicode__(self):
return self.rcabbr
class State(models.Model):
name = models.CharField(max_length=2)
slug = models.SlugField(unique=True)
state_long = models.CharField(max_length=15)
owning_site = models.CharField(max_length=12)
def __unicode__(self):
return self.name
return self.state_long
和我的views.py
def StateAll(request):
statelist = State.objects.all().order_by("name")
context = {'states':statelist}
return render_to_response('statelist.html',context,
context_instance=RequestContext(request))
def RcView(request, rclist):
rcs = Meta.objects.filter(rc_state = rclist)
context = {'rc_list': rcs}
return render_to_response('rclist.html',context, context_instance=RequestContext(request))
def RateCenterView(request,rcviews): # = rcviews is passed from the URL conf
rcv = Meta.objects.filter(rcabbr = rcviews)
context = {'whatrcv': rcv}
return render_to_response('rcview.html',context, context_instance=RequestContext(request))
和我的URLS.py
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
(r'^$', TemplateView.as_view(template_name='index.html')),
url(r'^meta/$', 'meta.views.StateAll'),
(r'^meta/(?P<rclist>.*)/$', 'meta.views.RcView'),
(r'^meta/(?P<rcviews>.*)/$', 'meta.views.RateCenterView'),
)
以及页面之间的代码片段 这列出了状态
{% for state in states %}
<p><a href="/meta/{{ state.name }}/">{{ state.state_long }}</a></p>
{% endfor %}
这需要状态并列出城市,其中一些额外的东西只是在试验
{% for rc in rc_list %}
<p><a href="/meta/{{ rc.slug }}">{{ rc }}</a></p>
<p>RateCenter Slug: {{ rc.slug }}</p>
<p>RateCenter RC_State: {{ rc.rc_state }}</p>
<p>RateCenter: {{ rc }}</p>
{% endfor %}
这是破碎的页面
{% for rca in whatrcv %}
<p>RateCenter Slug: {{ rca.slug }}</p>
<p>RateCenter RC_State: {{ rca.rc_state }}</p>
<p>RateCenter: {{ rca }}</p>
{% endfor %}
答案 0 :(得分:0)
您网址中的问题,您的两个网址是相同的,也在您的html网址(href =&#34; / meta / city / {{rc.slug}})中,不以/结尾。像这样更改你的网址:
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
(r'^$', TemplateView.as_view(template_name='index.html')),
url(r'^meta/$', 'meta.views.StateAll'),
(r'^meta/(?P<rclist>.*)/$', 'meta.views.RcView'),
(r'^meta/city/(?P<rcviews>.*)/$', 'meta.views.RateCenterView'),
)
然后像这样更改你的HTML:
{% for rc in rc_list %}
<p><a href="/meta/city/{{ rc.slug }}/">{{ rc }}</a></p>
<p>RateCenter Slug: {{ rc.slug }}</p>
<p>RateCenter RC_State: {{ rc.rc_state }}</p>
<p>RateCenter: {{ rc }}</p>
{% endfor %}
这对你有用。