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





附件列表

    原文地址:https://www.cnblogs.com/highroom/p/193a303ce14b4fd68dff8061ff236507.html