Django一些配置和使用
2016-11-02 19:16
295 查看
Django环境的安装
进入官网下载合适的Django包链接
如果你使用的是python2,建议使用1.7版本以下
windows下
下载相应的安装包 并解压
进入到解压后的Django目录
运行python 执行 python setup.py install安装完成后会python安装到python文件夹下的lib—site-packages—django中
查看Django版本 django.VERSION
将两个目录加入环境变量 一个是django目录和Script目录(里面是命令行文件)
django卸载一直删除python安装目录下lib—site-packages中的内容即可。
linux下
下载相应的安装包 并解压tar xzvf Django-1.9.2.tar.gz
进入解压后的文件夹安装cd Django-1.9.2/Sudo python setup.py install
如果版本匹配不好这里会提示一个报错是因为setuptools没有安装,我们再安装一个setuptools就好了。
Python2.x:
wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
Python 3.x
wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python3.4
然后再次安装Django即可成功。
sudo python setup.py install
Django一些配置和使用
使用 django-admin.py startproject hello 命令创建一个名为hello的项目文件夹目录结构
manage.py可以启动本地服务
setting.py是配置文件
urls.py是路径文件
其他两个暂时用不上
setting.py里的配置
INSTALLED_APPS里面配置的是你新建的app名字(需要先创建app,后添加app否则会报错)
MIDDLEWARE_CLASSES是中间间配置
TEMPLATES是模板配置,可以在项目下创建一个templates文件夹用来存放模板,并且在TEMPLATES 下的DIRS(默认为空)中引入
DATABASES是数据库相关配置
LANGUAGE_CODE是配置语言(中文改成zh-Hans)
TIME_ZONE是配置时区(北京时间改成Asia/Shanghai)
引入静态资源需要在setting.py后面添加如下代码
STATIC_ROOT = os.path.join(BASE_DIR,'static').replace('\\','/') STATIC_URL = '/static/' STATICFILES_DIRS = ( ("images",os.path.join(STATIC_ROOT,'images').replace('\\','/')), ("css",os.path.join(STATIC_ROOT,'css').replace('\\','/')), ("js",os.path.join(STATIC_ROOT,'js').replace('\\','/')), ) STATICFILES_FINDERS = ( "django.contrib.staticfiles.finders.FileSystemFinder", "django.contrib.staticfiles.finders.AppDirectoriesFinder" )
使用./manage.py startapp world创建名为world的app目录结构如下
admin.py是用来注册数据库表
models.py是模型信息
views.py是处理逻辑的一些函数
使用时的一些操作
新建了一个MyEmail的app我使用的是mysql数据库,在setting.py数据库配置需要先在mysql数据库中建立一个同名的数据库
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': '数据库名', 'USER': '用户', 'PASSWORD': '密码', 'HOST': '', 'PORT': '', } }
简单的登陆注册实现:
models.py代码
from __future__ import unicode_literals from django.db import models # Create your models here. class User(models.Model): username = models.CharField(max_length = 30) password = models.CharField(max_length = 30) def __unicode__(self): return u'%s'%(self.username)
CharField是字符串类型最大长度为30
admin.py代码
from django.contrib import admin from MyEmail.models import * # Register your models here. admin.site.register(User)
将User这个模型注册到数据库中形成一个表
同步到数据库需要执行 ./manage.py migrate 和./manage.py makemigrations命令
urls.py代码
from django.conf.urls import * from django.contrib import admin urlpatterns = patterns('MyEmail.views', url(r'^admin/', admin.site.urls), ('^login/$','login'), ('^register/$','register'), ('^success/$','success'), ('^re_success/$','re_success'), )
这里的url可写可不写,括号里的第一项是正则表达式用来匹配路径,匹配上执行第二项的函数
这个url可以写在项目下的urls.py也可以写在app下的urls.py里,如果写在项目下要将MyEmail.views改成项目名.views
views.py代码
from django.http import HttpResponse import datetime from django.template import loader from django.shortcuts import render,render_to_response from MyEmail.models import * # Create your views here. def login(request): return render_to_response('login.html') def success(request): if 'user' in request.GET and request.GET['user']: if 'password' in request.GET and request.GET['password']: user = request.GET['user'] password = request.GET['password'] users = User.objects.filter(username = user,password = password) if users: return render_to_response('user.html') else: return render_to_response('login.html',{'error3':True}) else: return render_to_response('login.html',{'error2':True}) else: return render_to_response('login.html',{'error1':True}) def register(request): return render_to_response('register.html') def re_success(request): if 'user' in request.GET and request.GET['user']: if 'password1' in request.GET and request.GET['password1']: user = request.GET['user'] password1 = request.GET['password1'] password2 = request.GET['password2'] if password1 == password2: users = User.objects.filter(username = user) if users: return render_to_response('register.html',{'error2':True}) else: p1 = User(username = user,password = password1) p1.save() return render_to_response('re_success.html') else: return render_to_response('register.html',{'error4':True}) else: return render_to_response('register.html',{'error3':True}) else: return render_to_response('register.html',{'error1':True})
创建一个templates文件夹存放模板
登陆模板主要代码
<div class="container"> <form role="form" class="form-horizontal" action="/success/" method="get"> <div class="form-group"> <label for="exampleInputEmail1" class="col-sm-2 control-label">username</label> <div class="col-sm-10"> <input name="user" type="text" class="form-control" id="exampleInputEmail1" placeholder="Enter email"> </div> {% if error1 %} <p style="color:red">用户名不能为空!</p> {% endif %} </div> <div class="form-group"> <label for="exampleInputPassword1" class="col-sm-2 control-label">Password</label> <div class="col-sm-10"> <input name="password" type="password" class="form-control" id="exampleInputPassword1" placeholder="Password"> </div> {% if error2 %} <p style="color:red">密码不能为空!</p> {% endif %} </div> <div class="form-group"> <div class="col-sm-offset-2 col-sm-10"> <div class="checkbox"> <label> <input type="checkbox">check me out </label> </div> </div> </div> <div class="form-group"> <div class="col-sm-offset-2 col-sm-10"> {% if error3 %} <p style="color:red"> 用户名或密码错误!</p> {% endif %} <input id="btn1" type="submit" name="login" value="登陆" class="btn btn-success"> <a href="/register/" class="btn btn-primary">注册</a> </div> </div> </form> </div>
注册模板主要代码
<div class="container"> <form role="form" class="form-horizontal" action="/re_success/" method="get"> <div class="form-group"> <label for="exampleInputEmail1" class="col-sm-2 control-label">username</label> <div class="col-sm-10"> <input name="user" type="text" class="form-control" id="exampleInputEmail1" placeholder="Enter email"> </div> {% if error1 %} <p style="color:red">用户名不能为空!</p> {% endif %} {% if error2 %} <p style="color:red">用户名已存在!</p> {% endif %} </div> <div class="form-group"> <label for="exampleInputPassword1" class="col-sm-2 control-label">Password</label> <div class="col-sm-10"> <input name="password1" type="password" class="form-control" id="exampleInputPassword1" placeholder="Password"> </div> {% if error3 %} <p style="color:red">密码不能为空!</p> {% endif %} </div> <div class="form-group"> <label for="exampleInputPassword2" class="col-sm-2 control-label">RePass</label> <div class="col-sm-10"> <input name="password2" type="password" class="form-control" id="exampleInputPassword2" placeholder="Password"> </div> {% if error4 %} <p style="color:red">两次密码不一致!</p> {% endif %} </div> <div class="form-group"> <div class="col-sm-offset-2 col-sm-10"> <div class="checkbox"> <label> <input type="checkbox">check me out </label> </div> </div> </div> <div class="form-group"> <div class="col-sm-offset-2 col-sm-10"> <button id="btn1" type="submit" name="button" class="btn btn-success">注册</button> <a href="/login/" class="btn btn-primary">返回</a> </div> </div> </form> </div>
登陆成功和注册成功界面就不写在这里了
一些其他使用
可以使用./manage.py createsuperuser创建一个超级用户,通过访问ip:端口号/admin登陆管理界面,可以很方便的对数据进行操作。在app下新建form.py可以生成表单
简单的代码事例
from django import forms class ContactForm(forms.Form): subject = forms.CharField(max_length=100) email = forms.EmailField(required = False,label = "your email") message = forms.CharField(widget=forms.Textarea) def clean_message(self): message = self.cleaned_data['message'] num_words = len(message.split()) if num_words < 4: raise forms.ValidationError("not enouth words") return message
相关文章推荐
- Django在使用mod_python+apache中配置VirtualHost的问题总结
- log4j的一些配置和使用
- 使用nginx配置django应用
- Spring中关于view层的一些配置和使用方法
- 使用Capistrano向EC2部署Django代码--关于SSH相关的配置
- CVS的配置和使用的一些经验
- vim配置(自动补全,自动生成tag,一些使用插件taglist,nerdtree)
- Myeclipse中经常使用的一些配置(tomcat,jdk,svn)
- Zend Studio的一些常用配置和使用帮助手册
- django中mysql配置及使用
- Oracle RAC安装过程中所使用的一些配置
- [项目过程中所遇到的各种问题记录]ORM篇——使用NHibernate配置对象实体的一些小问题
- [项目过程中所遇到的各种问题记录]ORM篇——使用NHibernate配置对象实体的一些小问题
- myEclipse使用的一些小技巧(如java代码的模板配置,覆盖已在的括号,浏览jsp快捷配置)
- 利用配置文件使用一些可配置的资源
- Spring中关于view层的一些配置和使用方法
- 解决 django1.2环境中使用自带的admin管理界面,配置后访问出现“你无权限修改任何东西” 的问题
- 让Windows Server 2008 更适合个人使用(适用于Windows Server 2008 R2) 简化一些配置 更简便
- 使用windows的一些习惯配置
- django之session使用的setting.py配置