【发布时间】:2013-02-16 11:15:23
【问题描述】:
我正在尝试向模型管理员添加两个 URL。
class JobTitleAdmin(admin.ModelAdmin):
inlines = [OccupationTagInline, ]
model = JobTitle
search_fields = ['title',]
list_filter = ['status',]
actions =['add_to_job_category', 'move_to_job_category' ]
def add_to_job_category_view(self, request):
return render_to_response(
'admin/job_title/select_job_category.html',
{
'action': 'add',
'featured_occupations': Occupation.objects.filter(featured=True),
'title_ids': array(request.GET['foo'])
},
context_instance=RequestContext(request)
)
def get_urls(self):
urls = super(JobTitleAdmin, self).get_urls()
custom_urls = patterns('',
url(r'^add_to_job_category/$', self.admin_site.admin_view(self.add_to_job_category_view), name='admin_jobtitle_add_to_cat',),
url(r'^move_to_job_category/$', self.admin_site.admin_view(self.move_to_job_category_view), name='admin_jobtitle_move_to_cat',)
)
return custom_urls + urls
为简单起见,我省略了视图代码。
这两种模式没有定义,因为如果我尝试访问它们并且没有在 django debud 404 页面中列出,我会得到 404。然而 get_urls 方法被正确调用(实际上是两次,不知道为什么)。
可能出了什么问题?
【问题讨论】:
-
我们能看到其余代码的准确性吗?具体来说,您正在使用的两个视图函数。
-
我刚做了。另一个观点几乎相同。我还没有写完整的视图,因为我可以得到它。
-
你确定你得到的是 404 而不是某种类型的 500?另外,您尝试访问它们的网址是什么?
-
注意:自定义 URL 附加到父 ModelAdmin URL。对于上面的示例,URL 将是
/admin/app-name/JobTitleAdmin/add_to_job_category/。这在 Django 文档Note 中有所介绍。此外,自定义 URL 不会列在 Django 调试 404 页面中。
标签: django django-admin django-urls