Vik*_*ica 5 django django-templates django-admin
我有一个名为CMS的应用程序与类别和文章.非常简单.
我覆盖app_index.html以启用基于ajax的拖放顺序并将文章从一个类别移动到另一个类别.
现在我想在保存/删除文章或类别后重定向到cms' app_index.html而不是模型change_list.html.如何才能做到这一点?
谢谢
class Category(models.Model):
order = models.IntegerField()
title = models.CharField(max_length=100)
text = models.TextField()
class Article(models.Model):
published = models.BooleanField(default=None)
images = generic.GenericRelation(Photo)
category = models.ForeignKey(Category)
title = models.CharField(max_length=100)
text = models.TextField()
order = models.IntegerField(blank = True, null = True)
Run Code Online (Sandbox Code Playgroud)
编辑
不,我自己的答案没有用.我误解了重定向应用
编辑2
Daniel的答案完成了一半的工作:在更改文章和类别后重定向.
编辑3
一个不太优雅的解决方案:urls.py中的重定向
def redirect_cms(response):
return HttpResponseRedirect('/admin/cms/')
urlpatterns += patterns('',
(r'^admin/cms/article/$',redirect_cms),
Run Code Online (Sandbox Code Playgroud)
还有其他想法吗?
Dan*_*man 10
在您的admin子类中,覆盖response_change和/或response_add方法.这些是在保存管理表单后分别为现有实例和新实例调用的,并负责返回HttpResponseRedirect当前将您带到change_list页面的内容.
看看原始代码,django.contrib.admin.options看看你需要做什么.
编辑:删除可以通过两种方式进行:由于change_list页面上的操作,在这种情况下您可以使用该response_action方法; 或者由于在变更表上删除,在这种情况下,遗憾的是没有相应的方法.处理此问题的一种方法可能是覆盖change_form.html应用程序的模板,并删除删除链接,以便删除的唯一方法是通过更改列表.无论如何都不理想.
该问题已得到解答,但删除后重定向的问题并未解决。也许以下解决方案将对某人有所帮助。Django的ModelAdmin类具有delete_view成员函数。它有两件事:
POST未定义,则显示“ 删除确认”页面。如果您确认并单击Delete,它将生成一个POST请求。POST现在的定义,该视图删除请求的项目并返回一个HttpResponseRedirect更改列表(如果用户无权更改,则返回管理员索引)。因此,让我们如下进行覆盖。
from django.http import HttpResponseRedirect
class MyAdmin(admin.ModelAdmin):
def delete_view(self, request, object_id, extra_context=None):
"""Redirect to website index page on delete."""
response = super(MyAdmin, self).delete_view(request, object_id, extra_context)
# Use our own redirect
if isinstance(response, HttpResponseRedirect):
return HttpResponseRedirect('/') # Any URL here
return response
Run Code Online (Sandbox Code Playgroud)
在Django 1.6下似乎对我有用。
| 归档时间: |
|
| 查看次数: |
3928 次 |
| 最近记录: |