python django开发web怎样_【python】Django web应用开发入门

1.安装Django

2.建立工程

django-admin.py startproject web01

3.建立应用

cd ./web01

django-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 HttpResponse

def index(req):

return HttpResponse('

Hello,Django!

')

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对应一个Employer

Employer可通过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)

一个作者可以有多本书,一本书也可以有多个作者。

我们还可以对数据进行一些操作:

#模型数据操作

#方式1

b = Book()

b.name = 'python book'

#方式2

b = Book(name = 'python book')

#方式3

b = 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-server

yum -y install MySQL-python

service mysqld start #启动数据库服务

mysql -u root -p #登录数据库

8. 模板:blog/templates

存放html等模板文件

模板变量

{{title}}

hello {{user.name}}

变量放在2个大括号中;

可传递普通变量,字典,列表,对象,方法(无参数,有特定返回值)等

优先级:字典>属性>方法>列表

加载,生成,渲染(views.py)

from django.template import loader,Context

from django.http import HttpResponse

def 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_response

def 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 %}

{{author.name}}

{% for book in author.book_set.all %}

{{book}}

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 admin

from blog.models import User

admin.site.register(User) #注册User数据库

用户管理Auth系统

11.表单初步

'views.py'

from django import forms

class 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_response

from django.http import HttpResponse

from django import forms

class 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'

{{uf.as_p}}

后台管理的方法

'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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值