Django单表的增删改查

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
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()  # 向数据库提交,保存到数据库中

  

posted @   冒蓝火的加特林哒哒哒  阅读(200)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示