2014-09-20 41 views
0

我是新來的Python和Django,我已經通過構建博客的教程,我已經通過另一個教程,建立一個基於啤酒和啤酒廠的頁面。我的Django視圖和URL不匹配某處給我一個空白屏幕

雖然經歷了這個過程,但我在開始自己的項目的同時,第一頁列出了一些帶有鏈接的州,即第二頁列出了這些州內的特定城市。

從那裏我想鏈接到與該城市相關的第三個網站特定項目。前兩頁效果很好。然而,當我點擊城市名稱,無論我嘗試過什麼,我都會得到一個空白頁面。

我不能爲了我的生活找出我要去哪裏錯了。我不認爲我完全理解從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 %} 

這取S中的狀態,並列出了城市,與一些額外的東西在裏面只是嘗試

{% 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

的問題在你的網址,你的兩個URL是相同的,也你的html網址(href =「/ 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 %} 

這會爲你工作。

+0

沒有完全解決我的問題,但它導致我的答案。所以我做的是,按照你的建議更改了url和html鏈接,但仍然產生了空白。所以後退了一步,並在URL中的RcView行和html中的鏈接中添加了「/ state /」。然後在RcView html中的鏈接末尾添加一個簡單的「/」,並使其完美工作。謝謝Yogesh指導我正確的方向。 – user3255253 2014-09-20 14:51:06