django 怎么取消change页面返回按钮,不重写页面的情况

作者:biancangming 2155 浏览 7 评论 发布时间:2019-11-14 15:27:39

在后台开发的时候,某些数据只需要一条记录,并不需要设置很多条数据库记录。

就像下面这个例子,网站基本数据只有一条

于是我把change页面设置成默认首页,替换了原有的changelist_view

但是带出来一个问题,左下角多出一个返回按钮。在原生的django-admin点这个页面没问题。

但是django-simpleui 引出来一个问题,点击返回变成下面的景象。怎么解决???@Simple官方

我的代码如下

@admin.register(SiteSetting)
class SiteSettingAdmin(admin.ModelAdmin):
    list_display = ['title', 'keywords', 'description']

    def has_add_permission(self, request):
        count = self.model.objects.all().count()
        if count >= 1:
            return False
        else:
            return super().has_add_permission(request)

    def has_delete_permission(self, request, obj=None):
        return False

    def changelist_view(self, request, extra_context=None):
        site_setting = self.model.objects.all()
        count = site_setting.count()
        if count == 1:
            return HttpResponseRedirect('/admin/bbd_admin/sitesetting/%s/change/' % site_setting.first().id)
        else:
            return super().changelist_view(request, extra_context=None)

Loading...
评论列表 7条评论
社区小助手
2020-05-04 18:14:43

@biancangming 小问题,重新克隆下静态文件就可以了。

python3 manage.py collectstatic
biancangming
2020-05-04 18:14:43

@simplepro 升级到最新版出现了新的问题,我的首页进去不去了,错误如下。

社区小助手
2020-05-04 18:14:43

@biancangming 升级下,返回按钮,应该是返回到上一级页面了。

然后如果你想把编辑页这种内页当成首页的话,可以用重写模板的方式

利用block 根据request的路径,或者context中的模块信息来判断,把返回按钮隐藏就好了。

这里有重写模板的例子,在templates文件夹中

https://github.com/newpanjing/simpleui_demo

重写方法:

在你的项目中的templates加入admin文件夹,新建名为submit_line.html的文件

然后在submit_line.html中加入以下内容

{% load i18n admin_urls simpletags%}
<div class="submit-row">

    {% if show_delete_link %}
        {% url opts|admin_urlname:'delete' original.pk|admin_urlquote as delete_url %}
        <el-button icon="el-icon-delete" type="danger" @click="del('{% add_preserved_filters delete_url %}')"
                   style="float: left">{% trans "Delete" %}</el-button>
    {% endif %}
    {% if show_save_as_new %}
        <el-button type="primary"
                   @click="formSubmit('_saveasnew','{% trans 'Save as new' %}',$event)">{% trans 'Save as new' %}</el-button>
    {% endif %}
    {% if show_save_and_add_another %}
        <input type="submit" class="el-button el-button--primary" value="{% trans 'Save and add another' %}"
               name="_addanother">
    {% endif %}
    {% if show_save_and_continue %}

        <input type="submit" class="el-button el-button--primary" value="{% trans 'Save and continue editing' %}"
               name="_continue">
    {% endif %}
    {% if show_save %}
        <input type="submit" class="el-button el-button--primary" value="{% trans 'Save' %}" name="_save">
    {% endif %}
    <input type="hidden" name="actionName" value="actionValue" id="actionName">
</div>
<script type="text/javascript">
    var submitrows=document.getElementsByClassName('submit-row');
    for(var i=0;i<submitrows.length;i++){
        new Vue({
        el: submitrows[i],
        data: {},
        methods: {
            del: function (url) {
                window.location.href = url;
            },
            formSubmit: function (name, v, e) {
                $("#actionName").attr('name', name).val(v);
                $("form").submit();
            },
            prev: function () {
             window.location.href='{% get_model_url %}'
            }
        }
    })
    }

</script>

这段我已经删除返回按钮了,你也可以自己从simpleui的这个文件中拷贝出来,处理返回按钮。

biancangming
2020-05-04 18:14:43

@simplepro 我先升级下看看,用的时间久了

biancangming
2020-05-04 18:14:43

@simplepro django-simpleui==2.0.6

社区小助手
2020-05-04 18:14:43

@biancangming

社区小助手
2020-05-04 18:14:43

你simpleui是什么版本的?微笑