【发布时间】:2012-11-25 09:02:35
【问题描述】:
为大学生编写应用程序 - 显示一个系列表,单击一个,然后显示该系的课程,单击一个,然后显示教授该课程的教授。
URL conf 有问题 - 我的应用不断将我重定向到错误的视图。
所以我有 3 个模型
class Department(models.Model):
subject = models.CharField(max_length = 25)
pub_date = models.DateTimeField(auto_now_add = True)
def __unicode__(self):
return self.subject
class Course(models.Model):
department = models.ForeignKey(Department)
course_number = models.CharField(max_length = 50)
course_name = models.CharField(max_length = 100, blank = True, null = True)
c_pub_date = models.DateTimeField(auto_now_add = True)
def __unicode__(self):
return self.course_number
class Professor(models.Model):
course = models.ForeignKey(Course)
prof_name = models.CharField(max_length = 50)
p_pub_date = models.DateTimeField(auto_now_add = True)
def __unicode__(self):
return self.prof_name
然后我的应用 URL conf 转到视图、课程和教授,具体取决于 URL
urlpatterns = patterns('qanda.views',
url(r'^$', 'index'),
url(r'(?P<department_id>\d+)/$', 'courses'),
url(r'(?P<department_id>\d+)/(?P<course_id>\d+)/$', 'professors'),
)
所以当我访问 url mysite.com 时,它会列出数据库中的所有部门。然后单击一个部门(即数学),它将带我进入 mysite.com/1 上的课程视图,其中显示了该部门的所有课程。然后点击一门课程应该会将我带到教授视图 mysite.com/1/1,其中显示了教授该课程的所有教授。
但是,当我进入课程视图并单击课程以进入教授视图时,即使 URL 显示 mysite.com/1/2,它实际上会将我重定向回 mysite.com/2,将course_id(在本例中为 2)并将其误认为是部门 ID,并将我重定向到课程视图。
例如,Math 101 course_id = 1。Math 102 course_id = 2。对于 Math 101,有 2 位教授。 A教授professor_id = 1,B教授professor_id = 2。
所以当点击 Math 101 时,URL 将是 mysite.com/1。之后点击教授 B 时,URL 将是 mysite.com/1/2。但是,现在点击教授 B 时,URl 显示 mysite.com/1/2,但会将我带到 mysite.com/2。
知道为什么会这样吗?
【问题讨论】:
-
你能给出视图代码而不是模型代码吗?