python笔记(web框架 Django框架 ORM,模板语言,视图,组件)

一、创建Django框架

  1. 命令行启动

    cmd命令创建django项目:`django-admin startproject 文件名`
    python3 manage.py runserver IP:端口 -->在指定的IP和端口启动
    python3 manage.py runserver 端口    -->在指定的端口启动
    python3 manage.py runserver        -->默认在本地的8000端口启动
    
  2. 配置相关 项目名/setting.py文件

        1.Templates(存放HTML文件的配置)   <--告诉Django去哪找我的HTML文件
        2.静态文件(CSS/js/图片)
          静态文件保存目录的别名
          STATIC_URL = 'static'
    
          所有的静态文件(CSS/js/图片)都放在我下面你配置的文件中
          STATICFILES_DIRS = [
              os.path.join(BASE_DIR,"static"),
              .......
          ]
    
        3.注释掉setting.py中带有csrf的那一行
    
  3. form表单往后端提交数据需要注意:

    1、action属性控制往哪儿提交,method一般都设置成post
    2、提交按钮必须是type = submit,不能是别的类型
    
  4. get请求和post请求:

    get请求:
      1、浏览器请求一个页面
      2、搜索引擎检索
      3、a标签
      4、get请求携带的数据都拼在了URL上
      5、get请求携带的数据有限长度限制 40k
    post请求:
      1、浏览器向服务端提交数据,比如登陆/注册等
      2、新增/修改 大段的数据
      3、上传文件
      4、form表单提交数据
    
  5. Django中的APP:

    什么是APP?以及为什么要用APP?
    方便我们在一个大的项目中添加更多的功能
      Project:项目
      App:应用
    
  6. ORM

    以前的方式:
        import pymysql
        pymysql.connect(
            ....
        )
    现在的ORM:
      1.什么是ORM?
    
            类:   数据表
            对象: 数据行
            属性: 字段
    使用Django的ORM详细步骤:
        1、自己动手创建数据库
        2、在Django项目中设置连接数据库的相关配置(告诉Django连接哪一个数据库)
        DATABASES = {
            'default': {
                'ENGINE': 'django.db.backends.mysql',
                # 连接数据库的地址
                'HOST':'127.0.0.1',
                # 连接数据库的端口
                'PORT':3306,
                #数据库的名称
                'NAME': 'useinfo',
                # 用户
                'USER':'root',
                # 密码
                'PASSWORD':'',
            }
        }
        3、告诉Django用什么连接数据库:MySQLDB pymysql(告诉Django用pymysql来代替默认的MySQLdb)
              在项目/__init__.py文件中,写下面两句
              import pymysql
              pymysql.install_as_MySQLdb()    告诉Django用pymysql来代替默认的MySQLdb
        4、在app下面models.py文件中定义一个类,这个必须继承models.Model
            class 类名(models.Model):
                   ...
        5、执行两个命令
                1.python3 manage.py makemigrations    将models.py文件中的改动记录在小本本(app/migration/xx)上
                2.python3 manage.py migrate   将改动翻译成SQL语句,去数据库执行
        6、操作数据表
        ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190301171159140.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNDMzMTgz,size_16,color_FFFFFF,t_70)一对多
    

在这里插入图片描述
多对多
在这里插入图片描述
在这里插入图片描述
增、删、改、查操作

在这里插入图片描述
在这里插入图片描述

  1. Django WEB请求流程(settings.py models.py

    1.启动Django项目,等待用户连接
    2.浏览器在地址栏输入URL,来连接我的Django项目
    3.在urls.py中找路径和函数的对应关系
    4.执行对应的函数
    5.返回响应
    
  2. views.py

    		1.专门用来定义处理请求的函数
    		    1.基本必备三件套:
    		      from django.shortcuts import HttpResponse,render,redirect
    		      1.HttpResponse("要返回的内容")
    		      2.render(request,"HTML文件",{"k1":v1})
    		      返回HTML文件或者打开 或进行字符替换
    		      3.redirect(URL) 跳转到另一个页面
    
  3. urls.py

    	from django.conf.urls import url
    	from django.contrib import admin
    	from app01 import views
    	# from django.shortcuts import HttpResponse,render,redirect
    	
    	
    	urlpatterns = [
    
        url(r'^long/', views.long),
        url(r'^login/', views.login),
        url(r'^user_list/', views.user_list),
        url(r'^add_user/', views.add_user),
    
        # 出版社相关对应关系
        url(r'^publisher/', views.publisher),
        url(r'^add_publisher/', views.add_publisher),
        url(r'^delete_publisher/([0-9]+)/$', views.delete_publisher),
        url(r'^edit_publisher/([0-9]+)/$', views.edit_publisher,name='edit_publisher'),
    
        # 书相关对应关系
        url(r'^book_list/', views.book_list),
        url(r'^add_book/', views.add_book),
        url(r'^delete_book/([0-9]+)/$', views.delete_book),
        url(r'^edit_book/([0-9]+)/$', views.edit_book),
    
    
        url(r'^author_list/', views.author_list),
        url(r'^add_author/', views.add_author),
        url(r'^delete_author/([0-9]+)/$', views.delete_author),
        url(r'^edit_author/([0-9]+)/$', views.edit_author),
    ]
    
  4. request相关的知识点

request.method:post,get
request.post  -->所有和post请求相关的数据
request.get   -->所有和get请求相关的数据
  1. 静态文件的配置:

在这里插入图片描述

  1. 其他的相关配置说明
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

二、Django模板语言

1、 基本语法:

	 1、{{name}}  -->变量
	 2、for循环
	      {% for i in book_list%}
	          {{ forloop.counter }}  当前循环
	          {{ orloop.counter  }}  最后一次循环
	           {{i}}
	      {% endfor %}
	 3、if判断
	      {% if 10>5%}
	        ...
	      {% else %}
	        ...
	      {% endif %}
	 4、if ... in ...
	      {% if name in name_list %}
	        ...
	      {% endif %}

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2、模板的继承和使用:

  1. 把公用的HTML部分提取出来,放到base,html文件中

  2. base.html中,通过定义block,把每个页面不同的部分区分出来

        {% block page-main %}
            ....
        {% endblock %}
    
  3. 在具体的页面中,先继承母版 :

    {% extends 'base.html' %}
    
  4. 然后block去指定替换模板中的相应内容

    {% block page-main %}
        ....
    {% endblock %}
    
  5. 可以在base.html中定义很多block,通常我们会额外定义page-csspage-js

3、组件的创建和使用:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5、视图
在这里插入图片描述

  1. CBV(class base view)和FBV(function base view)

  2. request对象

  3. 上传文件
    在这里插入图片描述
    在这里插入图片描述

  4. json格式
    在这里插入图片描述
    在这里插入图片描述

  5. URL地址匹配:

    分组命名匹配:相当于给视图函数传递关键字参数
    分组匹配:相当于给视图函数传递位置参数
    

    在这里插入图片描述

  6. 反向解析URL

    本质上是给URL匹配模式起别名,然后用别名拿到具体的URL路径
    如何起别名:在URL匹配模式中定义  name = '别名'
    如何使用:
       1、在模板语言里面使用:{% url '别名'%}
       2、在视图中如何使用:
            from django.urls import reverse
            reverse('别名') -->  得到具体的URL路径
    

在这里插入图片描述
7. 分组命名匹配
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
创建多个app的urls处理
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41433183/article/details/88063182