【发布时间】:2016-02-24 21:17:43
【问题描述】:
我想创建一个这样的网址:
example.com/reviews/state/city/school/program
州、城市、学校和项目必须从模型中动态生成。我一直在谷歌搜索,但我不知道要问的正确问题。我陷入了僵局。在我解决这个问题之前,我真的不知道如何编写任何视图或 urls.py
提前感谢您的帮助。
编辑:我已经查看了有关编写 url 的教程。但是,我不想在我的正则表达式中使用数字。我希望从模型字段动态生成 URL。我该怎么做?
应用模型
from django.db import models
import numpy as np
class State(models.Model):
short_name = models.CharField('State abbreviation', max_length=2)
name = models.CharField('State Name', max_length=15)
def __str__(self):
return self.name
class City(models.Model):
state = models.ForeignKey(State)
name = models.CharField('City', max_length=100)
class Meta:
verbose_name = 'City'
verbose_name_plural = 'Cities'
def __str__(self):
return self.name
class ZipCode(models.Model):
city = models.ForeignKey(City)
code = models.CharField(max_length=5)
def __str__(self):
return self.code
class Address(models.Model):
street = models.CharField(max_length=255, default='')
zip_code = models.ForeignKey(ZipCode, default='')
def __str__(self):
return self.street
class Meta:
verbose_name = 'Address'
verbose_name_plural = 'Addresses'
class Program(models.Model):
program_type = models.CharField(max_length=3)
def __str__(self):
return self.program_type
class Specialty(models.Model):
specialty = models.CharField('Specialty', max_length=30, default='')
def __str__(self):
return self.specialty
class School(models.Model):
program = models.ForeignKey(Program, default='')
specialty = models.ForeignKey(Specialty, default='', null=True)
address = models.ForeignKey(Address, default='')
school_name = models.CharField(max_length=100, default='')
created = models.DateTimeField('Date published')
def __str__(self):
return self.school_name
class Meta:
verbose_name = 'School'
verbose_name_plural = 'Schools'
【问题讨论】:
-
好吧,恐怕不问我们就无法给出答案。动态 URL 是 Django 的基础,在本教程中有很好的介绍;唯一额外的事情是你想在你的 URL 中有几个动态元素,但这只是意味着你的模式中有几个正则表达式组。具体来说,您在哪里遇到了麻烦?
-
阅读official tutorial关于编写URL。
-
我不知道 URL 文档中的什么内容会让您相信它只适用于数字。如果您想使用字符串,请使用它们。