安装:
下载后运行python setup.py install
或pip
安装
创建项目:
进入准备创建项目的目录下,运行命令:
django-admin.py startproject xxx
django-admin.py在windows(其他系统也可能因为安装不同而不在环境变量里)下不能直接调用,可以将其放入环境变量中或是去python的安装目录下的Lib\site-packages\django\bin
下运行。windows下没有关联文件类型的话,上面的命令前需要加上ptyhon,即
python django-admin.py startproject xxx
创建的项目结构如下:
projectname/
|- manage.py
|- projectname/
|- __init__.py
|- settings.py
|- urls.py
|- wsgi.py
运行项目:
python manage.py runserver
默认端口号是8000,可以指定端口号运行
python manage.py runserver 8080
访问http://127.0.0.1:8000/可以显示django的默认页面
这种运行方式并非部署,只是运行Development Server
,只能可靠的处理一次单个请求。在此模式下代码或配置的变动都会立即生效。
创建APP:
python manage.py startapp xxx
APP结构如下:
APPname/
|- __init__.py
|- models.py
|- tests.py
|- views.py
进入项目的settings.py
下,把新建的APP加入到INSTALLED\_APPS
中,例如:
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
# 'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'APPname',
)
第一个视图:
在此假定APP的文件夹名是polls
1、打开views.py
文件,在polls
的目录下,键入示例代码:
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello world")
2、在polls下创建urls.py文件,并编辑加入一下代码:
from django.conf.urls import patterns, url
from polls import views
urlpatterns = patterns('',
url(r'^$', views.index, name='index'))
3、编辑项目工程的urls.py
,即projectname/projectname/urls.py
,如下:
from django.conf.urls import patterns, include, url
urlpatterns = patterns('',
url(r'^polls/', include('polls.urls')),
)
4、浏览器地址栏下键入http://127.0.0.1:8000/polls/
模板:
1、在APP目录下新建文件夹templates,并在项目的settings.py文件下配置模版的路径,示例如下:
import os.path
...
TEMPLATE_DIRS = (
# Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
os.path.join(os.path.dirname(__file__), '../polls/templates').replace('\\','/'),
)
这边注释已经说的很清楚了,使用绝对路径,如果是windows下使用/代替\。
上面的os.path.join(os.path.dirname(__file__), '../polls/templates').replace('\\','/'),
是来获取settings.py文件的路径然后拼接出模板文件夹的路径。注意后面添加","。
2、修改views.py文件,如下
from django.shortcuts import render_to_response
def index(request):
return render_to_response('index.html')
静态文件:
和模板配置类似,在APP目录下新建文件夹static,并在项目的settings.py文件下配置静态文件的路径:
STATICFILES_DIRS = (
os.path.join(os.path.dirname(__file__), '../polls/static').replace('\\','/'),
)
django shell:
一个提供了django的一些api,可以使用项目的上下文的shell,使用命令进入
python manage.py shell
shell下可以调用一些django的api,模型的操作之类
模型:
1、数据库连接设置
在settings.py
下,设置DATABASES
,示例如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mysql',
'USER': 'user',
'PASSWORD': 'password',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
ENGINE
的不同数据库的设置如下:
- postgres:‘django.db.backends.postgresql_psycopg2’
- mysql:‘django.db.backends.mysql’
- sqlite:‘django.db.backends.sqlite3’
- oracle:‘django.db.backends.oracle’
这里python的不同数据库驱动都是要自己安装的,django并不包含这些驱动。
2、模型文件,在app下打开models.py
文件,如下:
class Answer(models.Model):
ans_id=models.AutoField(primary_key=True)
ans_respondent_id=models.IntegerField()
ans_question_num=models.IntegerField()
ans_answer=models.CharField(max_length=100)
在此,模型是一个类,每个模型都是django.db.models.Model
的子类,Model包含了所有必要的数据库操作。一个模型代表着数据库内的一个表,类中属性对应着表的字段。属性的类型相当于数据库的字段类型,如CahrField相当于oracle数据库的varchar2
。如果不指定主键,同步的时候django会自动加入一个名为id的自增长主键。
3、模型的同步,django可以使用定义好的模型在数据库内创建对应的表。同步的前提是已经设置好数据库连接,app已经配置到settings.py
中。
1)在终端输入命令
python manage.py validate
该命令可以检查模型的语法和逻辑的正确性。
2)数据库建表语句显示
python manage.py sqlall appname
会显示创建表的SQL语句,appname是要显示模型所在的app
3)同步
python manage.py syncdb
该命令执行完成后数据库就会看到模型对应的表了。该语句多次执行也不会重复创建表。
4、基本数据操作。一下操作都是在python manage.py shell
后执行,
保存
>>> p1 = Publisher(name='Apress', address='2855 Telegraph Avenue',
... city='Berkeley', state_province='CA', country='U.S.A.',
... website='http://www.apress.com/')
>>> p1.save()
查找所有
>>> publisher_list = Publisher.objects.all()
条件查找(过滤)
>>> Publisher.objects.filter(name__contains="press")
表单:
表单和模型类型,模型对应的是数据库表,而表单对应的是页面的form。app下建forms.py文件,示例代码如下:
class Submitter(forms.Form):
username=forms.CharField(max_length=15)
userphone=forms.CharField(max_length=11, min_length=11)
useremail=forms.EmailField()
school=forms.CharField(max_length=20)
age=forms.IntegerField()
sltype=forms.CharField(max_length=5)
这边每个表单都是继承django.forms。表单名没有特定要求,而其属性是对应的页面上表单中各个组件的name,属性的类型则是对应组件提交数据的类型。
通过表单提供的方法,可以校验页面所提交的数据,如:
sForm = Submitter(request.POST)
if sForm.is_valid() and qForm.is_valid():
ur = sForm.cleaned_data
print(ur['username'])
上面的cleaned_data
属性, 是一个包含干净的提交数据的字典。
表单亦可生成模版代码,即html代码,这样还可以省去编写页面表单的时间。