一、创建Django框架
-
命令行启动
cmd命令创建django项目:`django-admin startproject 文件名` python3 manage.py runserver IP:端口 -->在指定的IP和端口启动 python3 manage.py runserver 端口 -->在指定的端口启动 python3 manage.py runserver -->默认在本地的8000端口启动
-
配置相关 项目名/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的那一行
-
form表单往后端提交数据需要注意:
1、action属性控制往哪儿提交,method一般都设置成post 2、提交按钮必须是type = submit,不能是别的类型
-
get请求和post请求:
get请求: 1、浏览器请求一个页面 2、搜索引擎检索 3、a标签 4、get请求携带的数据都拼在了URL上 5、get请求携带的数据有限长度限制 40k post请求: 1、浏览器向服务端提交数据,比如登陆/注册等 2、新增/修改 大段的数据 3、上传文件 4、form表单提交数据
-
Django中的APP:
什么是APP?以及为什么要用APP? 方便我们在一个大的项目中添加更多的功能 Project:项目 App:应用
-
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)一对多
多对多
增、删、改、查操作
-
Django WEB请求流程(settings.py models.py)
1.启动Django项目,等待用户连接 2.浏览器在地址栏输入URL,来连接我的Django项目 3.在urls.py中找路径和函数的对应关系 4.执行对应的函数 5.返回响应
-
1.专门用来定义处理请求的函数 1.基本必备三件套: from django.shortcuts import HttpResponse,render,redirect 1.HttpResponse("要返回的内容") 2.render(request,"HTML文件",{"k1":v1}) 返回HTML文件或者打开 或进行字符替换 3.redirect(URL) 跳转到另一个页面
-
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), ]
-
request相关的知识点
request.method:post,get
request.post -->所有和post请求相关的数据
request.get -->所有和get请求相关的数据
- 静态文件的配置:
- 其他的相关配置说明
二、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、模板的继承和使用:
-
把公用的HTML部分提取出来,放到
base,html
文件中 -
在
base.html
中,通过定义block
,把每个页面不同的部分区分出来{% block page-main %} .... {% endblock %}
-
在具体的页面中,先继承母版 :
{% extends 'base.html' %}
-
然后block去指定替换模板中的相应内容
{% block page-main %} .... {% endblock %}
-
可以在
base.html
中定义很多block
,通常我们会额外定义page-css
和page-js
3、组件的创建和使用:
5、视图
-
CBV(class base view)和FBV(function base view)
-
request对象
-
上传文件
-
json格式
-
URL地址匹配:
分组命名匹配:相当于给视图函数传递关键字参数 分组匹配:相当于给视图函数传递位置参数
-
反向解析URL
本质上是给URL匹配模式起别名,然后用别名拿到具体的URL路径 如何起别名:在URL匹配模式中定义 name = '别名' 如何使用: 1、在模板语言里面使用:{% url '别名'%} 2、在视图中如何使用: from django.urls import reverse reverse('别名') --> 得到具体的URL路径
7. 分组命名匹配
创建多个app的urls处理