1.Django下载
命名行
pip install django==1.11.16
pip install django==1.11.16 -i https://pypi.doubanio.com/simple/
pycharm
settings 解释器 点+号 输入Django 选择版本 下载
2.创建项目
命令行
django-admin startproject 项目名
pycharm
file new project 选择Django 输入项目名称 选择解释器 输入APP名称 创建项目
3.启动项目
命令行
切换到项目的根目录下 manage.py
python manage.py runserver # 127.0.01:8000
python manage.py runserver 80 # 127.0.01:80
python manage.py runserver 0.0.0.0:80 # 0.0.0.0:80
pycharm
修改配置
点三角启动 dj
4.配置文件
数据库
静态文件
STATIC_URL = '/static/' # 别名
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static') ,
]
模板
TEMPLARTES
DIRS [os.path.join(BASE_DIR, 'templates')]
中间件
注释掉'django.middleware.csrf.CsrfViewMiddleware'
5.urls.py
写url和函数的对应关系
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'login/', views.login),
url(r'index/', views.index),
url(r'test/', views.test),
]
6.函数
参数: request 跟请求相关的内容
request.method 请求方式 GET POST PUT
request.POST form表单提交POST请求传递的数据 {} [] get
request.GET URL地址上的参数 {}
返回值:
from django.shortcuts import HttpReponse,render,redirect
HttpReponse('字符串') 返回一些字符串
render(request,'模板的文件名') 返回一个完整的HTML页面
redirect('要跳转的地址') 重定向 Location : 地址
7.app
创建APP
命令行
python manage.py startapp app名称
pycharm
tools run manage.py task startapp app名称
注册APP
INSTALLED_APPS = [
'app01' 或者 'app01.apps.App01Config',
]
8.form表单
action = '' method ='post' action 提交的地址 method 请求方式
所有的input标签要有name属性
一个input标签的type='submit' 或者 button
9.get 和 post的区别
get
获取一个页面
路径/?name=alex&pwd=alexdsb
request.GET
post
提交数据
request.POST
10.Django使用mysql数据库的流程:
创建一个mysql数据库
在settings中配置DATABASES
ENGINE : mysql ;
NAME: 数据库的名称;
HOST: IP '127.0.0.1'
PORT: 3306;
USER: 用户名;
PASSWORD: '密码';
告诉Django使用pymysql连接数据库
在与settings同级目录下的__init__.py写代码:
import pymysql
pymysql.install_as_MySQLdb()
. 写表 在app下的models.py中写类(继承models.Model)
class User(models.Model): # 默认表名 app01_user
name = models.CharField(max_length=32) # varchar(32)
pwd = models.CharField(max_length=32)
def __str__(self):
return self.name
执行数据库迁移的命令
python manage.py makemigrations # 记录models的变更记录
python manage.py migrate # 把变更记录的操作同步到数据库中
11.ORM
对象和关系型数据库的一个映射 同过操作对象的方式操作数据库的内容
对应关系
类 ___> 表
对象 ___> 记录 数据行
属性 ___> 字段
ORM的功能:
操作数据表
操作记录
具体的操作
from app01 import models
# 获取所有数据
models.User.objects.all() # __> QuerySet 对象列表
# 获取单个对象 获取不到数据或者拿到多条数据就报错
models.User.objects.get(name='alex',pwd='111') # __> 对象
# 获取满足条件的所有对象
models.User.objects.filter(name='alex',pwd='111') # __> QuerySet 对象列表
单表的增删改查
1.展示
model
class Publisher(models.Model): # app01_publisher
pid = models.AutoField(primary_key=True) # pid 主键
name = models.CharField(max_length=32) # 出版社名称
def __str__(self):
return self.name
设计URL
from app01 import views
# 展示出版社
url(r'^publisher_list/',views.publisher_list ),
写函数
from app01 import models
# 展示出版社
def publisher_list(request):
# 从数据库获取所有出版社对象
all_publisher = models.Publisher.objects.all()
return render(request, 'publisher_list.html', {'all_publisher': all_publisher})
写模板
<table border="1">
<tr>
<th>ID</th>
<th>名称</th>
</tr>
{% for foo in all_publisher %}
<tr>
<td>{{ foo.pk }}</td>
<td>{{ foo.name }}</td>
</tr>
{% endfor %}
</table>
模板语法
{{ 变量 }}
循环
{% for i in all_publisher %}
{{ forloop.counter }} # 当前循环的测试
{% endfor %}
2.增加、删除、编辑
见代码
3.新增ORM操作
# 新增数据
ret = models.Publisher.objects.create(name=new_name) # ret 是对象
# 删除数据
models.Publisher.objects.get(pk=pk).delete()
# 修改数据
obj_list = models.Publisher.objects.filter(pk=pk)
obj = obj_list[0]
obj.name = new_name # 内存中修改数据
obj.save() # 向数据库提交,保存到数据库中