• Django笔记


    1. 一、Django的安装、工程建立
    2. 1. 用豆瓣的源安装django
    3. pip install django - i http://pypi.douban.com/simple
    4. 2. django-admin.py的路径“;C:Python27Libsite-packagesdjangoin加入环境变量。
    5. 3. django-admin.py startproject mysite #建立工程
    6. 4. django-admin.py startapp blog #进入mysite目录建立应用
    7. 5. 修改对应mysitesettings.pyinstall_apps值,加入应用名称
    8. 6. mysiteurls.py中修改访问地址对应函数名称。
    9. url(r'^blog/index/$','blog.views.index' ),
    10. url(r'^blog/index1/$','blog.views.index1' ),
    11. url(r'^blog/index2/$','blog.views.index2' ),
    12. 7. 在应用blog下建立templetes目录,加入index.html文件
    13. <!DOCTYPE html>
    14. <html>
    15. <head lang="en">
    16. <meta charset="UTF-8">
    17. <title>Hello world!</title>
    18. </head>
    19. <body>
    20. <li>{{ name }}</li>
    21. {{ list }}
    22. {% for i in list %}
    23. <li>{{ i }}</li>
    24. {% endfor %}
    25. </body>
    26. </html>
    27. 8. 修改blog目录下views.py中的访问函数
    28. from django.http import HttpResponse
    29. from django.template import loader, Context, Template
    30. from django.shortcuts import render_to_response
    31. def index(req):
    32. t = loader.get_template('index.html')
    33. c = Context({'name':'Yang'})
    34. return HttpResponse(t.render(c))
    35. def index1(req):
    36. t = Template('<h1>hello {{name}} </h1>')
    37. c = Context({'name':'Zhu'})
    38. return HttpResponse(t.render(c))
    39. def index2(req):
    40. lst1 = [1, 2, 3, 4, 5]
    41. return render_to_response('index.html', {'name':'Ying', 'list':lst1})
    42. 二、WIN7安装MYSQLmysql-python
    43. 1. http://dev.mysql.com/get/Downloads/MySQLInstaller/mysql-installer-community-5.6.22.0.msi 下载WIN7MYSQL进行安装。
    44. 常用命令 show databases; use csvt; show tables; desc blog_employee;
    45. 2. https://pypi.python.org/pypi/MySQL-python/1.2.5 下载安装PYTHONMYSQL的数据库接口文件MySQL-python 1.2.5
    46. 3. 修改settings.py中的数据库配置。
    47. DATABASES = {
    48. 'default': {
    49. 'ENGINE': 'django.db.backends.mysql',
    50. 'NAME': 'csvt',
    51. 'USER': 'root',
    52. 'PASSWORD': 'syss',
    53. 'HOST': '',
    54. 'PORT': '',
    55. }
    56. }
    57. 4. 修改blog目录下models.py文件,增加类,python会根据类在数据库建表。
    58. from django.db import models
    59. class Employee(models.Model):
    60. name = models.CharField(max_length=20)
    61. def __unicode__(self):
    62. return self.name
    63. 5. 同步数据库Django会自动根据建立的类生成数据库表。
    64. python manage.py syncdb ,如果是django1.7,可能需要先执行python manage.py makemigrationspython manage.py migrate先做迁移。
    65. 6. 修改urls中的访问路径和blog目录下views.py的访问函数。
    66. url(r'^index/$', 'blog.views.index3')
    67. def index3(req):
    68. emps = Employee.objects.all()
    69. return render_to_response('index.html', {'emps':emps})
    70. 7. 修改templatesindex.html文件
    71. <!DOCTYPE html>
    72. <html>
    73. <head lang="en">
    74. <meta charset="UTF-8">
    75. <title>Hello world!</title>
    76. </head>
    77. <body>
    78. <li>{{ name }}</li>
    79. {{ list }}
    80. {% for i in list %}
    81. <li>{{ i }}</li>
    82. {% endfor %}
    83. {% for emp in emps %}
    84. <div>{{ forloop.counter }} {{ emp }}</div>
    85. {% endfor %}
    86. </body>
    87. </html>
    88. 三、Centos7安装MYSQLmysql-python
    89. 1. 安装MYSQL
    90. # wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
    91. # rpm -ivh mysql-community-release-el7-5.noarch.rpm
    92. # yum install mysql-community-server
    93. 2. 成功安装之后重启mysql服务
    94. # service mysqld restart
    95. 3. 初次安装mysqlroot账户是没有密码的
    96. 4. 设置密码的方法
    97. # mysql -uroot
    98. mysql> set password for root’@‘localhost = password('mypasswd');
    99. mysql> exit
    100. 4. 安装Mysql-python
    101. pip install mysql-python 安装python环境,pip install mysql-python 安装mysql环境,不然安装mysql-python会报错
    102. pip install mysql-python 安装pythonmysql接口
    103. import MySQLdb 成功,表示Python操作mysql成功
    104. 四、通过数据库模型,使用和管理数据库
    105. 1. csvt01csvt01urls.py中增加访问地址, url(r'^blog/article/$', 'blog.views.article')。
    106. 2.在应用目录csvt01logmodels.py增加数据模型。
    107. class Article(models.Model):
    108. name = models.CharField(max_length=50)
    109. date = models.DateField()
    110. number = models.IntegerField()
    111. text = models.CharField(max_length=500)
    112. def __unicode__(self): #对应显示为name
    113. return self.name
    114. 3. 在应用目录csvt01logviews.py中增加访问地址对应的处理函数。
    115. from blog.models import Article
    116. from django.shortcuts import render_to_response
    117. def article(req):
    118. arc = Article.objects.all()
    119. return render_to_response('show_article.html', {'articles':arc})
    120. 4. 在应用下模板目录下增加对应模板文件csvt01log emplatesshow_article.html
    121. <!DOCTYPE html>
    122. <html>
    123. <head lang="en">
    124. <meta charset="UTF-8">
    125. <title></title>
    126. </head>
    127. <body>
    128. {{ articles }}
    129. {% for article in articles %}
    130. <li>{{ article.name}} {{ article.number }} {{ article.date }} {{ article.text }}</li>
    131. {% endfor %}
    132. </body>
    133. </html>
    134. 5. 在命令行执行数据库迁移同步,会自动在数据库建立blog_article数据表。
    135. python manage.py makemigrations
    136. python manage.py migrate
    137. 6. 在命令行执行python manage.py shell,进入交互命令行界面增加实例数据。
    138. from blog.models import Article
    139. a1 = Article()
    140. a1.name = 'Yang'
    141. a1.number = 23
    142. a1.text = 'If you want to go, then go !'
    143. a1.date ='2014-01-07'
    144. a1.save()
    145. 7. csvt01logadmin.py中增加以下配置,在后台管理界面管理数据库表。
    146. from blog.models import Article
    147. admin.site.register(Article)
    148. 8. python manage.py runserver启动服务器,在浏览器中访问http://127.0.0.1:8000/blog/article/
    149. 五、注册用户数据保存到数据库并上传文件到服务器
    150. 1. 建立工程、增加blog应用
    151. django-admin.py startproject csvt09
    152. cd csvt09
    153. manage.py startapp blog
    154. Mysql增加对应数据库create database csvt09;
    155. 2. D:csvt09csvt09settings.py中修改对应配置文件。
    156. INSTALLED_APPS = (
    157. 'django.contrib.admin',
    158. 'django.contrib.auth',
    159. 'django.contrib.contenttypes',
    160. 'django.contrib.sessions',
    161. 'django.contrib.messages',
    162. 'django.contrib.staticfiles',
    163. 'blog',)
    164. DATABASES = {
    165. 'default': {
    166. 'ENGINE': 'django.db.backends.mysql',
    167. 'NAME': 'csvt09',
    168. 'USER': 'root',
    169. 'PASSWORD': 'syss',
    170. }
    171. }
    172. 禁用#'django.middleware.csrf.CsrfViewMiddleware',
    173. 3. 修改访问路径文件D:csvt09csvt09urls.py,增加url(r'^blog/$', 'blog.views.register')
    174. 4. D:csvt09logmodels.py中增加保存到数据库的数据模型。
    175. from django.db import models
    176. class User(models.Model):
    177. username = models.CharField(max_length=30)
    178. headImg = models.FileField(upload_to='./upload')
    179. def __unicode(self):
    180. return self.username
    181. 5. D:csvt09logviews.py中增加对应处理函数
    182. from django.shortcuts import render_to_response
    183. from django import forms
    184. from django.http import HttpResponse
    185. from blog.models import User
    186. class UserForm(forms.Form):
    187. username = forms.CharField()
    188. headImg = forms.FileField()
    189. def register(req):
    190. if req.method == "POST":
    191. uf = UserForm(req.POST, req.FILES)
    192. if uf.is_valid():
    193. username = uf.cleaned_data['username']
    194. headImg = uf.cleaned_data['headImg']
    195. print username, headImg
    196. user = User()
    197. user.username = username
    198. user.headImg = headImg
    199. user.save()
    200. return HttpResponse('ok')
    201. else:
    202. print 'false'
    203. else:
    204. uf = UserForm()
    205. return render_to_response('register.html', {'uf':uf})
    206. 6. D:csvt09log emplates egister.html中,增加模板文件内容。
    207. <!DOCTYPE html>
    208. <html>
    209. <head lang="en">
    210. <meta charset="UTF-8">
    211. <title></title>
    212. </head>
    213. <body>
    214. <h1>test</h1>
    215. <form method="post" enctype="multipart/form-data">
    216. {{ uf.as_p }}
    217. <input type="submit" value="ok">
    218. </form>
    219. </body>
    220. </html>
    221. 7. 在命令行执行数据库迁移同步,会自动在数据库建立blog_article数据表。
    222. python manage.py makemigrations
    223. python manage.py migrate
    224. python mange.py syncdb
    225. 六、使用cookie注册、登录表单页面
    226. 1. 建立工程、增加blog应用
    227. django-admin.py startproject web
    228. cd web
    229. manage.py startapp blog
    230. Mysql增加对应数据库create database web;
    231. 2. D:webwebsettings.py中修改对应配置文件。
    232. INSTALLED_APPS = (
    233. 'django.contrib.admin',
    234. 'django.contrib.auth',
    235. 'django.contrib.contenttypes',
    236. 'django.contrib.sessions',
    237. 'django.contrib.messages',
    238. 'django.contrib.staticfiles',
    239. 'blog',)
    240. DATABASES = {
    241. 'default': {
    242. 'ENGINE': 'django.db.backends.mysql',
    243. 'NAME': 'web',
    244. 'USER': 'root',
    245. 'PASSWORD': 'syss',
    246. }
    247. }
    248. 禁用#'django.middleware.csrf.CsrfViewMiddleware',
    249. 3. 修改访问路径文件D:webweburls.py,增加url处理。
    250. url(r'^register/$', 'blog.views.register'),
    251. url(r'^login/$', 'blog.views.login'),
    252. url(r'^index/$', 'blog.views.index'),
    253. url(r'^logout/$', 'blog.views.logout'),
    254. 4. D:weblogmodels.py中增加保存到数据库的数据模型。
    255. from django.db import models
    256. class User(models.Model):
    257. name = models.CharField(max_length=30)
    258. password = models.CharField(max_length=30)
    259. def __unicode__(self):
    260. return self.name
    261. 5. D:weblogviews.py中增加对应处理函数
    262. from django.shortcuts import render
    263. from django.http import HttpResponseRedirect, HttpResponse
    264. from django import forms
    265. from django.shortcuts import render_to_response
    266. from blog.models import User
    267. class UserForm(forms.Form):
    268. name = forms.CharField(max_length=30)
    269. password = forms.CharField(max_length=20)
    270. def register(req):
    271. if req.method == 'POST':
    272. uf = UserForm(req.POST)
    273. if uf.is_valid():
    274. name = uf.cleaned_data['name']
    275. password = uf.cleaned_data['password']
    276. User.objects.create(name=name, password=password) #保存表单内容到数据库
    277. return HttpResponseRedirect('/login/')
    278. else:
    279. uf = UserForm()
    280. return render_to_response('register.html', {'uf':uf})
    281. #__exact是数据库精确寻找,相当于=
    282. def login(req):
    283. if req.method == 'POST':
    284. uf = UserForm(req.POST)
    285. if uf.is_valid():
    286. name = uf.cleaned_data['name']
    287. password = uf.cleaned_data['password']
    288. user = User.objects.filter(name__exact=name, password__exact=password)
    289. if user:
    290. response = HttpResponseRedirect('/index/')
    291. response.set_cookie('name', name, 3600)
    292. return response
    293. else:
    294. return HttpResponseRedirect('/login/')
    295. else:
    296. uf = UserForm()
    297. return render_to_response('login.html', {'uf':uf})
    298. def index(req):
    299. name = req.COOKIES.get('name')
    300. return render_to_response('index.html', {'name':name})
    301. def logout(req):
    302. response = HttpResponse('logout')
    303. response.delete_cookie('name')
    304. return response
    305. 6. D:weblog emplates egister.html中,增加模板文件内容。
    306. <!DOCTYPE html>
    307. <html>
    308. <head lang="en">
    309. <meta charset="UTF-8">
    310. <title></title>
    311. </head>
    312. <body>
    313. <form method="post">
    314. {{ uf.as_p }}
    315. <input type="submit" value="ok">
    316. </form>
    317. </body>
    318. </html>
    319. 7. D:weblog emplateslogin.html中,增加模板文件内容。
    320. <!DOCTYPE html>
    321. <html>
    322. <head lang="en">
    323. <meta charset="UTF-8">
    324. <title></title>
    325. </head>
    326. <body>
    327. <form method="post">
    328. {{ uf.as_p }}
    329. <input type="submit" value="ok">
    330. </form>
    331. </body>
    332. </html>
    333. 8. D:weblog emplatesindex.html中,增加模板文件内容。
    334. <!DOCTYPE html>
    335. <html>
    336. <head lang="en">
    337. <meta charset="UTF-8">
    338. <title></title>
    339. </head>
    340. <body>
    341. <h2> Welcome {{ name }} </h2>
    342. <a href="/logout/">logout</a>
    343. </body>
    344. </html>
    345. 9. 在命令行执行数据库迁移同步,会自动在数据库建立blog_article数据表。
    346. python manage.py makemigrations
    347. python manage.py migrate
    348. python mange.py syncdb





    附件列表

    • 相关阅读:
      列表 元组
      前端 3
      前端 2
      python pymysql 表和数据的备份
      python 树 索引
      python 数据库连表查询习题
      python 数据库表查询
      python 数据库usdr 查询
      python set enum 完整性约束
      python 数据库表操作
    • 原文地址:https://www.cnblogs.com/highroom/p/193a303ce14b4fd68dff8061ff236507.html
    Copyright © 2020-2023  润新知