Django
一、django
Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。
二、启动Django
1. jiango-admin startproject 项目名
- python manage.py runserver
3. python manage.py startapp 应用名
注意:
创建的应用一定要去settings.py文件中进行注册;
命令行式创建项目没有tempolates,而且settings.py文件中也没有路径配置;
使用pycharm创建可以自动创建tempolate文件夹和路径,也可以支持创建一个应用并注册。要增加应用必须手动添加并注册。
三、创建Django项目
3.1 文件
3.1.1 url.py:
from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^login/', views.login),
url(r'^reg/', views.reg)
]
3.1.2 视图文件:
# Create your views here.
def login(request):
pass
def reg(request):
pass
3.2 reder,HttpResponse,redirect的使用
reder直接返回html页面:
def reg(request):
user_dic = {'name': 'ceng', 'pwd': 123}
return render(request, 'reg.html')
# 第一种给模板传值的方式
return render(request, 'reg.html', {'xxx': user_dic})
# 第二种给模板传值的方式,但是会出现效率问题
return render(request, 'reg.html', locals())
HttpResponse返回字符串:
def login(request):
return HttpResponse('你好')
redirect为重定向:
def home(request):
return redirect('http://www.badu.com')
3.3 静态文件配置
一般情况下静态文件资源都统一放在stasic文件夹下,配置位置在settings,STATIC_URL = '/static/'是访问静态资源的接口前缀,只要访问静态资源,就必须以stasic开头。
手动配置静态文件访问资源:
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
os.path.join(BASE_DIR, 'static1'),
os.path.join(BASE_DIR, 'static2')
]
注:文件查找顺序会按照static,static1,static2的顺序,最后也没有找到才会报错。
3.4 动态配置
静态会将访问的字符写死,而动态可以解决这个问题,在HTML文件加上一段模板语法:
{% load static %}
<link rel="stylesheet" href="{% static 'bootstrap/css/bootstrap.min.css' %}">
<script src="{% static 'bootstrap/js/bootstrap.min.js' %}"></script>
3.5 form表单交互
form表单默认的提交方式是get请求,get请求会携带参数,加载url?后面。
get请求缺点是不安全;携带的参数大小有限。
如果要提交post请求,可以在settings.py文件中注释掉一句话
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
3.6 request请求
发送请求会返回get或者是post,因此需要对不同的请求方式,进行不同的逻辑运算。获取请求方式会返回大写字符串,默认请求为get,因此对请求区分处理:
if request.method == 'POST':
print('这是post请求')
print ('这是get请求')
获取请求的方法:
request.POST
# 默认获取最后一个元素
username = request.POST.get('username')
# 取出完整列表
hobby = requset.POST.getlist('hobby')
# get和post在后端获取用户数据的时候 规律是一样的
request.GET
3.7 连接mysql
django连接mysql:
第一步:在配置文件中配置属性:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 指定数据库
'NAME': 'day57', # 到底使用哪个库
'USER':'root',
'PASSWORD':'',
'HOST':'127.0.0.1',
'PORT':3306,
'CHARSET':'utf8'
}
}
第二步:在项目名下的--init--.py 也可以在应用名下面的--init--.py文件中指定:
import pymysql
pymysql.install_as_MySQLdb()
3.8 django中的orm
对象关系映射(Object Relational Mapping,简称ORM).
类-->数据库的表;对象-->表的记录;对象获取属性-->记录的某个字段对应的值。
优点:能够让一个不会数据库操作的人 也能够简单快捷去使用数据库。
缺点:由于封装程度太高 可能会导致程序的执行效率偏低。
注意:orm不能建立库,需要自行创建;要在models.py中创建类。
from django.db import models
# Create your models here.
class Userinfo(models.Model):
# 设置id字段为userinfo表的主键 id int primary key auto_increment
# 在django中 你可以不指定主键字段 django orm会自动给你当前表新建一个名为id的主键字段
id = models.AutoField(primary_key=True)
# 设置username字段 username varchar(64) CharField必须要指i定max_length参数
# 在django orm中 没有char字段 但是django 暴露给用户 可以自定义char字段
username = models.CharField(max_length=32)
# 设置password字段 password int
password = models.IntegerField()
# 新增的字段 可以提前设置默认值
phone = models.BigIntegerField(default=110)
# 新增的字段 可以设置为空
addr = models.CharField(max_length=64,null=True)
注意!!!!!!
每次修改了models.py中与数据库相关的代码,必须在terminal中输入以下两条命令:
# 将操作生成记录,并没有生成表
python manage.py makemigrations
# 及记录迁移到数据库
python manage.py migrate
3.9 字段的操作
字段的增删改查可以直接在models.py中编辑即可,注意主键默认值等属性,每次修改完都要进行数据迁移。