0

Есть ли способ написать URL-адрес, который выглядит так: unitedstates.com/state/city с классом в django? Состояние вид имеет слизню и имеет модель состояния. Город будет таким же. Хотя я могу генерировать unitedstates.com/state или unitedstates.com/city, я не могу понять, как получить unitedstates.com/state/city.Чистые URL-адреса, основанные на имени, с классами

Документация не помогает мне. Я просто хотел бы узнать из любопытства. Любая помощь или объяснение было бы весьма полезно.

спасибо.

+0

Что вы сделали до сих пор? – v1k45

+0

Да, конечно, это возможно. Где именно у вас проблемы? –

ответ

1

Да, это можно сделать. Я приведу вам один пример.

Определите модели:

class State(models.Model): 
    slug = models.SlugField() 

class City(models.Model): 
    slug = models.SlugField() 
    state = models.ForeignKey(State) 

Определите вид:

from django.views.generic import DetailView 
from .models import City 

class CityDetailView(DetailView): 

    def get_object(self): 
     city = City.objects.get(
      slug=self.kwargs.get('city'), 
      state__slug=self.kwargs.get('state') 
     ) 
     return city 

И, наконец, добавьте в ваш urls.py:

from django.conf.urls import url 
from .views import CityDetailView 

urlpatterns = [ 
    url(r'^(?P<state>\w+)/(?P<city>\w+)/$', CityDetailView.as_view()), 
] 
+1

Спасибо. Я протестировал его. Оно работает. – user2901792