初识Django并创建一个上传文件的项目
author:侠仔
Django是一块非常牛逼的重量级WEB框架,基于Python,采用了MVC的软件设计模式,于2008年9月发布了第一个正式版本1.0.
好了,词穷了,编不下去了,开始使用它吧.
确保已经在你的windows上,使用pip install django来安装一个最新版的django.这里每一步都给出图片说明,希望对初学者有帮助.
1.使用Django创建一个页面
1.1开始部署了,本次使用基于pycharm
新建一个Django项目,在location这里,需要制定你项目的地址和目录的名称,create
1.2新建的项目里面,没有任何的应用,需要新建一个应用
选中manage.py,单击工具-run manage.py tast…
出现的命令行,输入startapp web11,一个名称为web11的应用就创建好了
1.3创建好应用之后,在全局设置文件settings.py的INSTALLED_APPS的后面一行,增加web11到最后一行.让Django知道你增加了一个应用web11,否则将有可能无法启动该应用.
1.4进入web11这个应用,编辑视图文件view.py
初学者调试,先用render_to_response这个模块,该模块需要手工导入
然后,在编写一个视图函数index,request这个参数是系统默认会传入的值.首先测试返回一个index.html的页面
from django.shortcuts import render,render_to_response
def index(request): return render_to_response('index.html')
1.5配置路由urls.py
添加了视图函数,还需要有相应的调用函数的模块,这里,urls.py这个路由控制器,就是调用函数的入口.
首先依然是要从应用web11里面导入视图模块views,否则是没有办法使用视图函数index的
然后就是添加路由.url()左边的是路由的正则表达式(这里使用index/,r”的意思是,使用原字符串,不进行转义),右边就是对应的视图函数view.index.
1.6配置模板templates
如果各位亲使用没有templates目录的话,手动新建一个即可.
新建该目录后,创建一个index.html,这个是上面视图函数会渲染到的模板,这里内容就写 this is awen’s Django.
1.7启动服务manage.py
如果是使用dos启动,就进入manage.py所在的目录运行python manage.py runserver 0.0.0.0:8002即可
使用pychram,需要在下图的结构编辑-script parameters里面增加runserver 0.0.0.0:8002 再执行manage.py
1.8浏览器进入http://127.0.0.1:8002/index
如果上述的自检通过,没有语法错误,那么出现starting development server at http://0.0.0.0:8002,Quit the server whit CTRL-BREAK,表示你的服务已经成功启动
在浏览器输入http://127.0.0.1:8002/index/,出现我们模板设定的This is Awen’s Django,说明你的服务调试成功,没问题.
实战开始
2.创建一个上传文件的项目
2.1先创建一个model,起名User
实际上,在django中,采用对象关系映射ORM的方式,将数据库的表视作一个对象,抛开繁琐的sql语句,使得数据库的的修改,就像直接操作对象一样方便,无论是使用什么数据库,都能从容面对
一个数据库表对象就是一个类,这里User就是数据库中的一个表web11_user,表里有2个字段,分别是字符串类型和文件类型
class User(models.Model): username = models.CharField(max_length = 32) headImg = models.FileField(upload_to='./upfile/') def __unicode__(self): return self.username
2.2创建数据库的本地映射文件,并映射到数据库(使用默认的测试库sqlite3.db)
##创建本地映射文件 python manage.py makemigrations
##映射本地文件到数据库 python manage.py migrate
2.3编辑视图文件,加入UserForm窗体和register视图函数
##导入相应模块 from web11.models import User from django import forms from django.http import HttpResponse
##增加UserForm窗体和register视图函数 class UserForm(forms.Form): username = forms.CharField() headImg = forms.FileField() def register(request): if request.method == "POST": uf = UserForm(request.POST,request.FILES) if uf.is_valid(): username = uf.cleaned_data['username'] headImg = uf.cleaned_data['headImg'] user = User() user.username = username user.headImg = headImg user.save() return HttpResponse('upload ok!') else: uf = UserForm() return render_to_response('register.html',{'uf':uf})
2.4添加路由upfile,指向视图函数register
urlpatterns = [ url(r'^upfile/', views.register), ]
2.5将setting.py的django.middleware.csrf.CsrfViewMiddleware注释掉
实际测试中,如果不注释,会报错
Forbidden (403) CSRF verification failed. Request aborted. Help Reason given for failure: CSRF token missing or incorrect.
2.6 启动manage.py服务,并打开浏览器输入http://127.0.0.1:8002/upfile/,并上传本地的一个图片
2.7查看数据库中web11_user表的记录情况
谢谢观赏
Powered by 侠仔 @2017-7-16
侠仔牛逼了