• Django开发汇总


    基本配置

    # 设置数据库为使用的mysql
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'library',
            'USER': 'root',
            'PASSWORD': 'password',
            'HOST': '10.18.99.166',
            'PORT': '3306',
        }
    }
    
    # 设置语言为 中文
    LANGUAGE_CODE = 'zh-hans'
    
    # 设置时区为 中国
    TIME_ZONE = 'Asia/Shanghai'
    
    # 自定义模块 与 静态文件 位置
    TEMPLATES = [
        {
        ...
    'DIRS': [os.path.join(BASE_DIR,  'templates')],
        ...
    	},
    ]
    
    # 静态文件目录,为包含一个元素的元组; 此句放于 STATIC_URL='/static' 语句后
    STATICFILES_DIRS = (os.path.join(BASE_DIR,'static'),)    
    
    

    一、 Form 表单

    1、在获取信息较多时,使用Django自带的form类比较简单,其又分为以下两类
    form 与 modelForm:
    前者获取信息,不需要存入数据库;
    后者获取信息,一般需要存入数据库;

    from django import forms
    class LoginForm(forms.Form):
      username = forms.CharField()
      password = forms.CharField(label="密码",widget=forms.PasswordInput)
    

    在注册与更新时,CreateView更简单,直接使用即可,但是若是需要注册的信息需要各种校验还是自定义一个RegisterForm比较方便。

    2、在select需要联动时,可以考虑自定义form

    3、在数据量所需更少时,可以直接通过ajax传递数据

    二、自带管理系统使用

    创建管理员账号 Superuser
    虚拟环境中输入 python manage.py createsuperuser

    # 新建用户,在用户注册时常使用,此处的User可以为继承了AbstractUser的自定义User
    u = User.objects.create_user(username=username, password=password, email=email)
    # 获取登录后的用户信息,以用户名字为例
    user_name = request.user.username 
    
    

    注册、登录、密码修改的实现方式

    1、注册
    在注册时,因为有特殊需要,所以手写了一个RegisterFrom(forms.Form),此处加入一些多选框。在获取到前端传过来的数据后,通过楼上的新建用户实现用户的注册。
    2、登录
    也是自定义一个简单Form(forms.Form),通过获取前端传过来的数据,使用 user = authenticate(username=cd['username'],password=cd['password']),验证用户输入是否正确实现登录。
    3、密码修改
    使用了自带的PasswordChangeView(),自定义了前端模板实现。

    以上,都有使用django自带的功能实现需求。

    权限管理

    from django.contrib.auth.models import Permission
    
    # 在Views.py中检查用户权限
    myuser.hasperm('appname.haha') # 传递参数时要加入model所属app
    # 或是在HTML模板里
    {% if perms.appname%}   # 
      <p>You have permission to do something in the appname.</p>
      {% if perms.appname.can_vote %}
        <p>You can vote!</p>
      {% endif %}
    {% else %}
      <p>You dont have permission to do anything in the appname.</p>
    {% endif %}
    
    # 增删权限
    myuser.user_permissions.add(per1,per2)
    myuser.user_permissions.remove(per1,per2)
    myuser.user_permissions.clear() # 清空权限
    
    user.get_all_permissions() # 列出用户所有权限,返回值为permission_name的list
    user.get_group_permissions() # 列出用户 所属group的权限
    

    三、界面信息展示

    1、后端传回queryset,前端用 模板语言遍历到表格中。若是想用datatable处理之,则在datatable初始化时对各列重命名,例

    <tbody>
    
    {% for a in queryset %}
    <tr>
      <td hidden>{{a.id}}</td>
      <td>{{ a.name }}</td>
    </tr>
    {% endfor %}
    
    </tbody>
    
    
    <script>
      var table = $('#table_id').DataTable({
        columns:[
          {data:'id'},
          {data:'name'},
        ]
      })
      table.select.style('os') # 想多选行时使用
    </script>
    

    2、前端在datatable中直接通过自带的ajax功能,获取数据。

    1、登录认证 参考
    https://www.cnblogs.com/lvye001/p/10141365.html
    https://www.cnblogs.com/zhanghongfeng/p/8331493.html

  • 相关阅读:
    预备作业02 : 体会做中学(Learning By Doing)
    7-1 货币转换
    秋季学校总结
    人生路上对我影响最大的三个老师
    自我介绍
    2019寒假作业3(抓老鼠啊~亏了还是赚了?)编程总结
    人生路上对我影响最大的三位老师
    自我介绍
    秋季学期学习总结
    7-1 抓老鼠啊~亏了还是赚了?
  • 原文地址:https://www.cnblogs.com/qev211/p/14366507.html
Copyright © 2020-2023  润新知