zoukankan      html  css  js  c++  java
  • Django基础篇

    djanjo简介

    Python的WEB框架有Django、Tornado、Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM、模型绑定、模板引擎、缓存、Session等诸多功能。Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。

    层次 职责
    模型(Model),即数据存取层 处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。
    视图(View),即表现层
    处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。
    模型与模板的桥梁。
    模板(Template),即业务逻辑层
    存取模型及调取恰当模板的相关逻辑。

    Django流程介绍

    著名的MVC模式:所谓MVC就是把web应用分为模型(M),控制器(C),视图(V)三层;他们之间以一种插件似的,松耦合的方式连接在一起。

    Django的MTV模式本质上与MVC模式没有什么差别,也是各组件之间为了保持松耦合关系,只是定义上有些许不同,Django的MTV分别代表:

           Model(模型):负责业务对象与数据库的对象(ORM)

           Template(模版):负责如何把页面展示给用户

           View(视图):负责业务逻辑,并在适当的时候调用Model和Template

    Django URL 路由系统

    1、每个路由规则对应一个view中的函数

     

    参数说明:

    • 一个正则表达式字符串
    • 一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串
    • 可选的要传递给视图函数的默认参数(字典形式)
    • 一个可选的name参数
    url(r'^index/(d*)', views.index),
    
    url(r'^articles/([0-9]{4})/$', views.year_archive),
    
    url(r'^manage/(?P<name>w*)/(?P<id>d*)', views.manage),
    
    url(r'^manage/(?P<name>w*)', views.manage,{'id':333}),
    

    2、根据app对路由规则进行一次分类

    Django的一个url分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template

    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^buy/',include('app.urls')),
    ]
    

    url中别名(相当于当url变化时我们不需要改 from提交的action后面url,会自动帮我们改变)

     别名

    配置文件

    1、创建django程序

    • 终端命令:django-admin startproject sitename
    • IDE创建Django程序时,本质上都是自动执行上述命令

    其他常用命令:

    python manage.py runserver 0.0.0.0
    python manage.py startapp appname
    python manage.py syncdb
    python manage.py makemigrations
    python manage.py migrate
    python manage.py createsuperuser
    

    2、模版

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

    3、静态文件

    STATICFILES_DIRS = (
    
            os.path.join(BASE_DIR,'static'),
    
        )

    Django Views(视图函数)

    http请求中产生两个核心对象:

    http请求:HttpRequest对象

    http响应:HttpResponse对象

    所在位置:django.http

    1、HttpRequest对象的属性:

     

     HttpRequest对象的属性

    HttpRequest对象的方法:get_full_path(),   比如:http://127.0.0.1:8000/index33/?name=123 ,req.get_full_path()得到的结果就是/index33/?name=123

    2、HttpResponse对象:

      在HttpResponse对象上扩展的常用方法:页面渲染:render,render_to_response,

                                                            页面跳转:redirect

                                                            locals:   可以直接将函数中所有的变量传给模板    

        return HttpResponse('ASD')
        return render_to_response('admin.html')
        return render(request,'admin.html')
        return redirect('/choutiadmin/login')

     Django Models(模型)

    一、 数据库配置  

    1、django默认支持sqlite,mysql, oracle,postgresql数据库。

        <1> sqlite

                django默认使用sqlite的数据库,默认自带sqlite的数据库驱动

                引擎名称:django.db.backends.sqlite3

         <2>mysql

                引擎名称:django.db.backends.mysql

    sqlite和mysql的区别是,创建表时sqlite无需提前创建表,而mysql必须是我们提前生成数据库,否则报错

    2、mysql驱动程序

              MySQLdb(mysql python)

              mysqlclient

              MySQL

              PyMySQL(纯python的mysql驱动程序)

    3、在django的项目中会默认使用sqlite数据库,在settings里有如下设置:

    如果我们想要更改数据库,需要修改如下:

     对应代码

    注意:NAME即数据库的名字,在mysql连接前该数据库必须已经创建,而上面的sqlite数据库下的db.sqlite3则是项目自动创建

             USER和PASSWORD分别是数据库的用户名和密码。

             设置完后,再启动我们的Django项目前,我们需要激活我们的mysql。

             然后,启动项目,会报错:no module named MySQLdb

             这是因为django默认你导入的驱动是MySQLdb,可是MySQLdb对于py3有很大问题,所以我们需要的驱动是PyMySQL

             所以,我们只需要找到项目名文件下的__init__,在里面写入:

                     import pymysql

                     pymysql.install_as_MySQLdb()

     利用pycharm创建数据库步骤(mysql或sqlite)

    下图的执行步骤会创建数据库,具体创建那种数据库还是要看你的设置

    为了更好的查询修改数据库,我们可以不使用Navicate,而是利用pycharm的Database

    1、在pycharm上创建mysql图形化数据库步骤:

    然后 ,安装MySQL的驱动(driver),这里需要创建一个密码(我的是123)安装成功后

     

    填入数据库的名字,mysql的用户名和密码,然后就可以进行连接了

    成功后点击右下角的apply和OK。

    这是你就可以看到数据库里的表和内容了:

    是不是很方便呢?

    如果你用的是sqlite数据库就更简单了,安装完驱动后,直接将sqlite拖动到Database就可以了:

  • 相关阅读:
    CQUOJ 10819 MUH and House of Cards
    CQUOJ 9920 Ladder
    CQUOJ 9906 Little Girl and Maximum XOR
    CQUOJ 10672 Kolya and Tandem Repeat
    CQUOJ 9711 Primes on Interval
    指针试水
    Another test
    Test
    二分图匹配的重要概念以及匈牙利算法
    二分图最大匹配
  • 原文地址:https://www.cnblogs.com/yezuhui/p/6853430.html
Copyright © 2011-2022 走看看