【python】Django web应用开发入门
来源:互联网 发布:mac jmeter安装教程 编辑:程序博客网 时间:2024/04/30 01:21
1.安装Django
2.建立工程
django-admin.py startproject web01
3.建立应用
cd ./web01django-admin.py startapp blog
4.配置:settings.py
- 创建APP后将APP添加进来
- 设置时区,语系等
- 数据库引擎配置
- 后台管理的开启
- 其他
5.映射:urls.py
- 将url地址映射到相应的views方法中(示例):
url(r'^blog/index/$','blog.views.index')
6.视图:blog/views.py
- 控制视图
from django.http import HttpResponsedef index(req): return HttpResponse('<h1>Hello,Django!</h1>')
7.模块:blog/models.py
- 定义模型,与数据库打交道
- 使用ORM,无需自己写SQL
class Employee(models.Model): name = models.CharField(max_length = 20) #创建字段name def __unicode__(self): return self.name #对象以字符串形式输出时返回name
- 多对一关系模型
class Employer(models.Model): name = models.CharField(max_length = 30)class Employee(models.Model): name = models.CharField(max_length = 30) employer = models.ForeignKey(Employer)
多个Employee对应一个EmployerEmployer可通过employee_set查看底下的所有employee。
- 多对多关系模型
class Author(models.Model): name = models.CharField(max_length = 30)class Book(models.Model): name = models.CharField(mat_lenth = 30) authors = models.ManyToManyField(Author)
一个作者可以有多本书,一本书也可以有多个作者。我们还可以对数据进行一些操作:
#模型数据操作#方式1b = Book()b.name = 'python book'#方式2b = Book(name = 'python book')#方式3b = Book.objects.create(name = 'python book')b.save()b.authors.add(jiange) #增b.authors.remove(jiange) #删b.authors.all() #查b.authors.filter(name__exact = 'jiange') #过滤查找
- 数据库同步
python manage.py syncdb
- 安装,启动MySQL
yum -y install mysql-serveryum -y install MySQL-pythonservice mysqld start #启动数据库服务mysql -u root -p #登录数据库
8. 模板:blog/templates
- 存放html等模板文件
- 模板变量
<title>{{title}}</title><body> <h1>hello {{user.name}}</h1></body>
变量放在2个大括号中;可传递普通变量,字典,列表,对象,方法(无参数,有特定返回值)等优先级:字典>属性>方法>列表
- 加载,生成,渲染(views.py)
from django.template import loader,Contextfrom django.http import HttpResponsedef index(req): title = 'mypage' user = {'name':'jiange','sex':'male'} t = loader.get_template('index.html') #将html文件内容加载过来 c = Context({'title':title,'user':user}) #生成Context对象 return HttpResponse(t.render(c)) #将c中的数据渲染到t中,并返回
简化:
from django.shortcuts import render_to_responsedef index(req): title = mypage user = {'name':'jiange','sex':'male'} render_to_response('index.html',{'title':title,'user':user})
- 模板使用流程
通过以下命令可查看每一步的执行效果
ipython manage.py shell
9.运行测试
python manager.py runserver
登录127.0.0.1:8000/相应路径查看网页。
10.模板标签
{% if ... %}do something{% else %}do something else{% endif %}{% for ... %}do something{% endfor %}eg:{% for author in authors %}<div> <h3>{{author.name}}</h3> {% for book in author.book_set.all %} <li>{{book}}</li> <% endfor %></div><% endfor %>
10.Admin后台管理系统
- 管理数据库
- 将settings.py中INSTALLED_APPS的django.contrib.admin打开
- 将urls.py中的
from django.contrib import admin
admin.autodiscover()
url(r’^admin/’,…)打开 - 同步数据库,创建管理员账户
- 创建blog/admin.py
from django.contrib import adminfrom blog.models import Useradmin.site.register(User) #注册User数据库
- 用户管理Auth系统
11.表单初步
'views.py'from django import formsclass UserForm(forms.Form): name = forms.CharField()#网页显示 Name:文本框def register(req): if req.method == 'POST': form = UserForm(req.POST) #绑定(数据从网页中传过来) if form.is_valid(): #验证 print form.cleaned_data #获取 return HttpResponse('ok') else: form = UserForm() return render_to_response('register.html',{'form',form})
settings.py中,将MIDDLEWARE_CLASSES中的csrf注释掉,简化流程。
12.文件上传
- 朴素的上传方法
'views.py'from django.shorcuts import render_to_responsefrom django.http import HttpResponsefrom django import formsclass UserForm(forms.Form): username = forms.CharField() headImg = forms.FileField()def regist(req): if req.method == 'POST': uf = UserForm(req.POST,req.FILES) if uf.is_valid(): print uf.cleaned_data['username'] print uf.cleaned_data['headImg'].name fp = file('/uploadfile/'+uf.cleaned_data['headImg'].name, 'wb') #打开,创建文件 s = uf.cleaned_data['headImg'].read() #读取上传的文件的内容到s fp.write(s) #将s写入到我们创建的文件中 fp.close() return HttpResponse('ok') else: 'do something else'
<form method="post" enctype="multipart/form-data"> {{uf.as_p}} <input type="submit" value="ok"/></form>
- 后台管理的方法
'models.py'class User(models.Model): username = models.CharField(mat_length = 30) headImg = models.FileField(upload_to = './uploadfile/') #可到settings中修改MEDIA_ROOT设置根目录 def __unicode__(self): return self.username
之后打开后台admin,同步数据库,blog下建立admin.py等。上传的文件存放在'./uploadfile/'下,对应数据库会记录,管理员可通过后台管理。
- 用户注册的方法
from blog.models import User... if uf.is_valid(): user = User() user.username = username user.headImg = headImg user.save()
13.会话cookie
- 会话记录存放在客户端
14.会话session
会话记录存放在服务器,客户端的cookie已加密
关于会话部分只看了个大概,留待下回有空再总结吧~^.^
0 0
- 【python】Django web应用开发入门
- Django 开发 Python Web应用
- python web开发——Django入门
- [举重若轻]python+django+mysql web开发入门学习之orm
- Python Web开发:Django入门学习笔记(1)
- Python Web开发:Django入门学习笔记(2)
- python使用django开发web应用-常用命令等
- python web框架django入门
- Python Web开发框架Django
- python web开发之django
- python+django web开发续
- python web开发--Django 学习
- Python进行web开发--django
- python web开发入门
- Python学习二:Django Web入门
- python web程序入门Django项目
- [python web框架]Django入门资料
- [举重若轻]python+django+mysql web开发入门学习之环境搭建
- 黑马程序员———C语言———【指针】
- Virtual Box 怎么重复使用虚拟硬盘文件.vdi
- storm提交jar包
- Leetcode #242 Valid Anagram
- UITableViewController总结
- 【python】Django web应用开发入门
- 《JDK 8学习笔记》读书笔记(1)
- Xcode 开发环境证书迁移心得
- 比较好的知识点
- 方丈“十宗罪”背后:今日佛教为何不再神圣?
- 6-08. 城市间紧急救援(25)--Dijkstra
- The Unique MST 1679(最小生成树的不唯一性)
- Spring MVC 简介
- 隐藏android的自带键盘