2016-02-24 45 views
4

在Django中我有我的應用程序,我在這裏放置這些國家的國家和城市的信息。這是我的model.py文件:在Django中創建網址的正確方法

class Country(models.Model): 
     class Meta: 
       verbose_name_plural = u'Countries' 

     name = models.CharField(max_length=50) 
     slug = models.CharField(max_length=255) 
     description = models.TextField(max_length=10000, blank=True) 

     def __unicode__(self): 
       return self.name 

class City(models.Model): 
     class Meta: 
       verbose_name_plural = u'Cities' 

     name = models.CharField(u'city', max_length=200) 
     slug = models.CharField(max_length=255, blank=True) 
     description = models.TextField(max_length=10000, blank=True) 
     country = models.ForeignKey('Country', blank=True, null=True) 

     def __unicode__(self): 
       return self.name 

我有我的國家的詳細視圖,該視圖中有這個國家的城市列表(views.py):

def CountryDetail(request, slug): 
     country = get_object_or_404(Country, slug=slug) 
     list_cities = City.objects.filter(country=country) 
     return render(request, 'country/country.html', {'country':country, 'list_cities':list_cities}) 

這是我的urls.py:

url(r'^(?P<slug>[-_\w]+)/$', views.CountryDetail, name='country'), 

我想創建包含該國的蛞蝓和城市的蛞蝓城市的URL,例如domain.com/spain/barcelona/

因此,我創建了城市的詳細視圖,而且它看起來是這樣的:

def CityDetail(request, resortslug): 
     country = Country.objects.get(slug=countryslug) 
     city = get_object_or_404(City, country=country, slug=cityslug) 
     return render(request, 'country/city.html', {'country':country, 'city':city}) 

這裏是我的城市細節urls.py:

url(r'^(?P<countryslug>[-_\w]+)/(?P<cityslug>[-_\w]+)$', views.CityDetail, name='resort'), 

,這是它的外觀像在我的HTML文件鏈接到城市的國家的詳細信息:

<h1>{{country.name}}</h1> 
<p>{{country.description}}</p> 
<h2>Cities</h2> 
{% for city in list_cities %} 
    <a href="/{{country.slug}}/{{city.slug}}"> 
     <p>{{city.name}}</p> 
    </a> 
{% endfor %} 

但是,當我點擊鏈接o f城市的網址,我收到了404錯誤。

Page not found (404) 
Request Method: GET 
Request URL: http://domain.com/spain/barcelona 
Using the URLconf defined in myproject.urls, Django tried these URL patterns, in this order: 
The current URL, spain/barcelona, didn't match any of these. 

這裏是我的項目我的url.py

urlpatterns = [ 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^country/', include('country.urls')), 

請幫助我理解爲什麼會這樣,謝謝。

+0

你會得到什麼樣的404錯誤?啓用DEBUG後,它應該說它嘗試了你的URL模式並且沒有匹配,或者它應該說「沒有城市匹配給定的查詢」(來自get_object_or_404)。 –

+0

你可以發佈你的myproject/urls.py文件的內容嗎? –

+0

因此,爲了澄清,您目前有一個模板/視圖設置,其中列出了一個國家/地區的所有城市,該國家通過URL進入。該頁面有效。國家/地區模板以URL格式「國家/城市」提供城市詳細信息的鏈接,但是,Django未找到該URL的匹配項。這可能表明您的城市詳細信息存在問題URLS.py – disflux

回答

相關問題