Python实例---CRM管理系统开发180331

注意:一个项目基本都设计增删改查,且第一个需要做的就是设计表结构

思维导图:

image

组件使用: Django  +   bootStrap  +   Jquery

数据库表结构设计:

      外键关联: 2种方式,

                  1. oneTooneField     -->底层也是ForenignKey,但是有Unique限制

                  2. ForeingnKey

      Django自带的用户认证模块:

                 from django.contrib.auth.models import User

                        user = models.OneToOneField(User, on_delete=True)  # 相当于继承了auth.models里面的User表

注意多对多是不能在列上显示的

image

项目问答

问: 为什么是request.user?

答: 这里是利用了Django自带认证系统,前端模板里嵌套了request对象,除了获取request.user还可以获取request.method等方法。

       如果是自定义的User【未继承auth.model】,想在前端利用request.userprofile获取用户信息,则需要在request对象里面添加userprofile对象的信息

models.py

image

问:为什么是request.user.userprofile.roles.all ?

答:因为Django中只能从request属性中获取user[这里的user是Django封装后,auth里面的user],而user和userprofiel是一对一的外键关系,所以这里是反向查值,一对一的反向不是【字段名_set】来获取的,而是根据request.user.userprofile获取,再拿到账号信息后根据多对多的Role查找角色信息最后找到menus菜单信息。

index.html

image

models.py

image

问: 为什么是 {%  url menu.url  %}  ?

答: 因为{% url menu.url %}是个URL,而{{ menu.url }}仅仅显示一个字符串

Index.html中{% url menu.url %}显示效果:

image

Index.html中{{ menu.url }}显示效果:

image

问:为什么要在urls.py里面写别名?

答: 因为我们生成动态菜单的时候,是根据url来跳转对应的界面的,如果这里不写别名的话,则需要在a表的href里面写死url路径,不方便后期的维护。

 

猜你喜欢

转载自www.cnblogs.com/ftl1012/p/9418774.html
今日推荐