【问题标题】:Clean, name-based urls with class-based views干净的、基于名称的 url 和基于类的视图
【发布时间】:2016-08-17 14:14:01
【问题描述】:

有没有办法在 django 中使用基于类的视图编写如下所示的 url:unitedstates.com/state/cityState 视图有一个 slug 和一个状态模型。 城市 是一样的。虽然我可以生成 unitedstates.com/stateunitedstates.com/city,但我不知道如何获取 unitedstates.com/state/city强>。

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

谢谢。

【问题讨论】:

  • 到目前为止你做了什么?
  • 是的,这当然是可能的。你到底是哪里出了问题?

标签: django python-3.x django-urls django-class-based-views clean-urls


【解决方案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()),
]

【讨论】:

    猜你喜欢
    • 2018-04-13
    • 2012-12-28
    • 1970-01-01
    • 2016-02-02
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 2014-02-16
    相关资源
    最近更新 更多