首页 > 其他 > 详细

Django简介

时间:2019-11-07 02:32:51      阅读:137      评论:0      收藏:0      [点我收藏+]

Django基础知识

一、Django的优势

Python的WEB框架有Django、Tornado、Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM、模型绑定、模板引擎、缓存、Session等诸多功能

二、DJango项目的创建

  1.命令行

django-admin startproject sitename  # 建项目
  python manage.py runserver 0.0.0.0  # 启动服务
  python manage.py startapp appname    # 创建app
  python manage.py syncdb                # 建表是的编码是utf8(后面的版本取消) 
  python manage.py makemigrations        # 连接库
  python manage.py migrate            # 建表
  python manage.py createsuperuser    # 创建admin用户

三、Django的目录结构

1.同项目名称一样的目录,是做全局变量的:setting(配置文件,路径配置等),urls(路由系统),wsgi(socket)
2.app文件:app,models,views,admin,tests
3.templates(存放html文件)
4.manage(进入Django命令行模式)
以下是自定义:log(存放日志),media(存放视频,照片),static(存放js,css,静态图片..)

四、连接数据库

注:新建的数据库要指定utf8格式,否则在建表时(有中文输入)会出现乱码

步骤:setting配置数据库,连接数据库,建表

  1、setting配置DATABASES

DATABASES = {
            default: {
            ENGINE: django.db.backends.mysql,
            NAME:dbname,
            USER: root,
            PASSWORD: xxx,
            HOST: ‘‘,
            PORT: ‘‘,
            }
        }

2、由于Django内部连接MySQL时使用的是MySQLdb模块,而python3中还无此模块,所以需要使用pymysql来代替

# 如下设置放置的与project同名的配置的 __init__.py文件中
             import pymysql
            pymysql.install_as_MySQLdb()

3、在setting配置模版文件路径(把html存放在templates)--默认已配置好

TEMPLATE_DIRS = (
os.path.join(BASE_DIR,‘templates‘),
)

  4、在setting配置静态文件路径(把css,js存放在statics)

注:在生产环境下(DEBUG=False),该配置失效

技术分享图片
STATICFILES_DIRS = (
        os.path.join(BASE_DIR,static),
        )
        注:在html里应用静态文件,建议使用模板语言
        1)在html开头添加
        {% load staticfiles %}
        2)应用静态文件
        {% static css/reset.css %}
复制代码
View Code

五、ORM

1-1 查询API:

技术分享图片
filter(**kwargs)  # 它包含了与所给筛选条件相匹配的对象
all()             # 查询所有结果
get(**kwargs)      # 返回与所给筛选条件相匹配的对象,返回的结果有且只有一个,超过则报错
values(*field)     # 返回一个valueQuerySet,一个特殊QuerySet(对象集合),返回结果是
                     一个可迭代的字典序列
exclude(**kwargs)  # 它包含了与所给筛选条件不匹配的对象
order_by(*field)   # 对查询结果进行排序
reverse()         # 对查询结果进行反向排序
distinct()         # 从返回结果中剔除重复记录
count()            # 返回数据库中匹配查询(QuerySet)的对象数量
first()            # 返回第一条记录
last()             # 返回最后一条记录
exists()           # 如果QuerySet包含数据,就返回True,否则返回False
复制代码
View Code

1-2 双下划线查询

技术分享图片
model.Tb1.objects.filter(id__lt=10, id__gt=1) # 获取id大于1 且 小于10的值
model.Tb1.objects.filter(id__in[11, 22, 33])  # 获取id等于11、22、33的数据
model.Tb1.objects.exclude(id__lt=10, id__gt=1)# 获取id不等于11、22、33的数据
model.Tb1.objects.filter(name_contains=ven) # 获取name值包含ven(区分大小写)
model.Tb1.objects.filter(name_icontains=ven) # 获取name值包含ven(不区分大小写)
model.Tb1.objects.filter(id__range=[1, 3]) # 获取id在区间1~3中的值(范围bettwen and)
View Code

1-3 多表操作(多对多):

  创建多对多的关系  author = models.ManyToManyFiled("Author") 

  书籍对象它的所有关联作者  obj = book_obj.authors.all()

      绑定多对多关系     obj.add(*QuerySet)  参数:一条或者多条(前面加*)

      解除多对多关系     obj.remove(author_obj)

 

惰性机制

  所谓惰性机制:Publisher.objects.all()或者.filter()等都只是返回了一个QuerySet(查询结果集对象),

它并不会马上执行sql语句,而是当调用QuerySet的时候才执行。

六、后台管理(Django admin和xadmin)---一般用xadmin,功能更强大,智能的管理系统

技术分享图片
特点:
    权限管理
    少前端样式
    快速开发
    
1、设置网站为中文显示(zh-hans,Asia/Shanghai,USE_TZ=False) # USE_TZ管理写入数据库的时区时间

2、管理user用户表
    1)设置app的admin.py
    =================================================
    from .models import UserProfile

    class UserProfileAdmin(admin.ModelAdmin):
        pass

    admin.site.register(UserProfile,UserProfileAdmin)
    =================================================


另外一个后台管理构架--xadmin

1、安装 
    1)pip install xadmin
    2)源码安装(推荐使用),用GitHub
        依赖包:pip3 install future;pip3 install django-crispy_forms;
        
    3)在setting中的applist加上
         xadmin,
         crispy_forms,
         
    4) 修改url,把admin ==> xadmin
    5) 生成xadmin数据表
    
2、xadmin用法--app的model注册
    1)在每个app文件夹里新建py文件:adminx.py
    2import xadmin

        from .models import UserProfile,EmailVerifyRecord,Banner

        class EmailVerifyRecordAdmin(object):
            list_display = [email,code,send_type,send_time]  # 展示出来的列
            search_fields = [email,code,send_type]             # 搜索栏
            list_filter = [email,code,send_type,send_time]   # 过滤器
            ordering = [-click_nums]                                 # 排序
            readonly_fields = [fav_nums]                              # 设置只读
            exclude = [click_nums]                                 # 不可见,与readonly_fields有冲突,同一列数据不可同时存在这两个字段里
                
            
        xadmin.site.register(EmailVerifyRecord,EmailVerifyRecordAdmin) # 与admin关联
        
    3)注:
        当有外键时:
            list_filter = [user__username,fav_id,fav_type,add_time] # 过滤器有所变量,用双下划线
            
3、xadmin后台管理页面设置(在user的app设置)
    1)主题设置
        ==============================================
        from xadmin import views
        
        class BaseSetting(object):
            enable_themes = True    # 显示主题
            use_bootswatch = True   # 能使用那些主题
            
        xadmin.site.register(views.BaseAdminView,BaseSetting)
        ==============================================    
        
    2)网站标题和页尾标题、model显示样式
        ==============================================
        from xadmin import views
        
        class GlobalSetting(object):
            site_title = "腾飞后台管理系统"
            site_footer = "腾飞学习网"
            menu_style = "accordion"
            
        xadmin.site.register(views.CommAdminView,GlobalSetting)
        ==============================================
        
    3)model显示的app名,如何改为中文名
        a. 在apps.py修改
            在类中增加 verbose_name = u"用户操作"
        b. 在__init__.py 文件增加
            default_app_config = "users.apps.Usersconfig"  # Usersconfig :类名 + config
复制代码
View Code

 

Django简介

原文:https://www.cnblogs.com/tyl23/p/11809462.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!