0

有没有一种方法可以编写如下所示的url:unitedstates.com/state/city带有基于类的django视图吗? 状态视图有一个slu and,并有一个状态模型。 城市将是相同的。虽然我可以生成unitedstates.com/stateunitedstates.com/city,我不知道如何获得unitedstates.com/state/city基于类视图的干净,基于名称的网址

该文档对我没有帮助。我只是想出于好奇而知道。任何帮助或解释提供将不胜感激。

谢谢。

+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