• Django后台设置--遇到的问题与解决方案


    1. 后台如何管理项目中的models

      新建的Django工程会自动引用admin 应用,新建后台可以通过 createsuperuser 命令建立后台admin超级管理员,我遇到的第一个问题,就是如何像后台中管理用户和角色一样,增删查改我自己的model,这个网上极为常见,就是在admin.py文件中注册自己的models就可以

    1 from django.contrib import admin
    2 from util.models import UserModel
    3 
    4 admin.site.register(UserModel)
    1 # 我们建立的model,用户相关的id,最好不要使用简单数字
    2 class UserModel(models.Model):
    3     uid = models.UUIDField(primary_key=True, default=uuid.uuid4)
    4     email = models.EmailField(unique=True)
    5     username = models.CharField(max_length=20)
    6     salt = models.CharField(max_length=128)
    7     password = models.CharField(max_length=128)
    8     date_joined = models.DateTimeField(auto_now_add=True)

    2. models在后台显示我们想要的名字

      注册models之后我们会发现登录后台后,管理我们model的那一项显示的是model名称。但是吧UserModel我自己知道是啥,别人不知道怎么办,我需要给他中文名称,这个时候需要在models.py文件下修改model对应的类,添加class Meta

    class UserModel(models.Model):
        uid = models.UUIDField(primary_key=True, default=uuid.uuid4)
        email = models.EmailField(unique=True)
        username = models.CharField(max_length=20)
        salt = models.CharField(max_length=128)
        password = models.CharField(max_length=128)
        date_joined = models.DateTimeField(auto_now_add=True)
    
        class Meta:
            verbose_name = "用户管理"
            verbose_name_plural = "用户管理"

    这时候再去看,是不是变化了

    3. models里面的对象,名字显示的不太好,我不想让他显示id

      这个时候添加__unicode__方法

     1 class UserModel(models.Model):
     2     uid = models.UUIDField(primary_key=True, default=uuid.uuid4)
     3     email = models.EmailField(unique=True)
     4     username = models.CharField(max_length=20)
     5     salt = models.CharField(max_length=128)
     6     password = models.CharField(max_length=128)
     7     date_joined = models.DateTimeField(auto_now_add=True)
     8 
     9     def __unicode__(self):
    10         return self.username
    11 
    12     class Meta:
    13         verbose_name = "用户管理"
    14         verbose_name_plural = "用户管理"

    4. 后台显示英文,我想要中文

      需要在settings里面设置LANGUAGE_CODE为zh-CN

    1 LANGUAGE_CODE = 'zh_CN'  
    2 USE_I18N = True  
    3 USE_L10N = True 

    而且,要在中间件设置中,使local高于common

    5. 后台添加的model对象,涉及到时间的字段,为啥我设置了auto_now=True,但是看起来不是很对呢

      需要设置时区,在settings文件中修改

    TIME_ZONE = 'Asia/Shanghai'
    
    # TIME_ZONE = 'UTC'

    这回和北京时间没差了

    6. 后台显示的标题叫Django后台管理,我需要改成自己的怎么办?

      先说明,这个方法不好,因为除非你将admin整个集成到项目里,要不然换个环境就得改一次,但是我没找到好方法。。。

      Python27.11Libsite-packagesdjangocontribadmin emplatesadmin目录下查看admin应用的模板,发现有django后台管理字样的,并且被多次继承的模板就是

    base_site.html,就改他

    1 {% extends "admin/base.html" %}
    2 
    3 {% block title %}{{ title }} | 名字{% endblock %}
    4 
    5 {% block branding %}
    6 <h1 id="site-name"><a href="{% url 'admin:index' %}">名字</a></h1>
    7 {% endblock %}
    8 
    9 {% block nav-global %}{% endblock %}

    这样就变了,在提醒一次!!慎用,有好方法求各位前辈留言告知。

    7. 最后

      Django管理员最好建立安全的新角色,比如有外键关联,为了保险起见,新建管理员账户,分配安全的角色,没有过分的删除权限

    这些算是我自己遇到的坑,欢迎交流指导

  • 相关阅读:
    CDH 重装 kafka 报错,挺常见的错误
    SpringBoot + easyexcel + vue 下载 excel 问题
    第二节 全球金融市场
    第一节 金融市场概述
    第1章-起 步
    第3关-input()函数
    第2关-条件判断与条件嵌套
    风变编程-Python基础语法
    第0关-千寻的名字
    Git知识点记录3-Git基础
  • 原文地址:https://www.cnblogs.com/hainan-zhang/p/6653361.html
Copyright © 2020-2023  润新知