为大学生写一个应用程序——显示一个系列表,你点击一个,然后它会显示那个系的课程,点击一个,然后显示教授那个课程的教授。
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 教授 ID = 1,教授 B 教授 ID = 2。
因此,当单击 Math 101 时,URL 将是 mysite.com/1。之后点击教授 B 时,URL 将是 mysite.com/1/2。但是,现在当点击教授 B 时,URl 显示 mysite.com/1/2,但会将我带到 mysite.com/2。
知道为什么会这样吗?