目前使用的主要开发语言还是python,有部分会用到网站开发,顺便看了一下《web接口开发与自动化测试基于python语言》,里面有Django的一些简单介绍,必要可以基于这个来开发个简单的web界面。首先一个是搞明白Django的访问逻辑次序。
以下是根据书上的学习和实践,拷贝自网络:
1、服务端响应url请求的执行顺序
1)项目结构
django_web
__init__.py
settings.py
urls.py
wsgi.py
django_web_app
__init__.py
admin.py
models.py
tests.py
views.py
templates
home_page.html
latest_books.html
manage.py
2)执行顺序
a)启动服务端——python manage.py runserver
获取setting.py文件中的配置,主要包括:
url映射关系文件路径:
ROOT_URLCONF = 'django_web.urls'
页面文件模板路径:
TEMPLATE_DIRS = (
os.path.join(BASE_DIR, 'templates'),
)
数据库配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django_db',
'USER': 'root',
'PASSWORD': 'feng',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
b)响应顺序
说明:
第一步:浏览器提交请求
http://127.0.0.1:8000/latest_books/
第二步:服务端根据请求的url在urls.py中进行匹配,并找到对应的“视图函数”
第三步:调用对应的“视图函数” 返回一个HttpResponse对象
第四步:django转换HttpResponse对象为一个适合的HTTP response,并返回给页面进行显示
2、url匹配模式
基本结构:
'^需要匹配的url字符串$'
PS:实际上最终完整的url串是http://根路径:端口号/需要匹配的url字符串
系统自动添加的部分'http://根路径:端口号/'
eg:url匹配模式:'^latest_books/$'
最终完整的url字符串:'http://127.0.0.1:8000/latest_books/'
1)^:匹配“子串头”。
eg:
'^latest_books/'
'http://127.0.0.1:8000/latest_books/',
'http://127.0.0.1:8000/latest_books/test1/',
都会被匹配上。
2)$:匹配“子串结尾”。
eg:
'latest_books/$'
'http://127.0.0.1:8000/latest_books/',
'http://127.0.0.1:8000/updir_1/latest_books/',
'http://127.0.0.1:8000/updir_2/latest_books/'
都会被匹配上。
3)子串末尾是否包含'/'
默认情况下必须添加(django开发者的基本习惯),如果不添加将会出现如下情况:
from django.conf.urls import patterns, url, include
urlpatterns = patterns('',
(r'^latest_books$', 'django_web_app.views.latest_books'),
)
如果子串末尾不想包含'/',可在setting.py中添加设置:APPEND_SLASH=False
但是必须安装了CommonMiddleware才会起作用。
4)手动配置网站“根目录”
在不手动配置网站“根目录”对应“视图函数”的情况下,会出现如下情况:
手动配置“根目录”对应“视图函数”:
a)urls.py
from django.conf.urls import patterns, url, include
urlpatterns = patterns('',
(r'^$','django_web_app.views.home_page'),
(r'^latest_books/$', 'django_web_app.views.latest_books'),
)
b)views.py
def home_page(request):
return render_to_response('home_page.html')
c)home_page.html
运行结果:
0、基本过程
1)创建 Django 工程 执行 django-admin.py startproject mysite 这样会在目录下建立一个 mysite:
文件如下:
__init__.py :让 Python 把该目录当成一个开发包 (即一组模块)所需的文件。 这是一个空文件,一般你不需要修改它。
manage.py :一种命令行工具,允许你以多种方式与该 Django 项目进行交互。 键入 python manage.py help ,看一下它能做什么。 你应当不需要编辑这个文件;在这个目录下生成它纯是为了方便。
settings.py :该 Django 项目的设置或配置。 查看并理解这个文件中可用的设置类型及其默认值。
urls.py :Django项目的URL设置。 可视其为你的django网站的目录。 目前,它是空的。
尽管这些的文件很小,但这些文件已经构成了一个可运行的Django应用。
python manage.py startapp books
这个命令并没有输出什么,它只在 mysite 的目录里创建了一个 books 目录。 让我们来看看这个目录的内容:
books/
__init__.py
models.py
tests.py
views.py
这个目录包含了这个app的模型和视图。
4)模型安装在 Django 项目中 激活 这些模型。 将 books app 添加到配置文件的已安装应用列表中即可完成此步骤。
再次编辑 settings.py 文件, 找到 INSTALLED_APPS 设置。 INSTALLED_APPS 告诉 Django 项目哪些 app 处于激活状态。
5)db的产生(尚未验证)
python manage.py validate #validate 命令检查你的模型的语法和逻辑是否正确
python manage.py sqlall books #把产生数据库表的SQL语句段打印出来
python manage.py syncdb #运行上面产生的SQL语句,实际生成数据库表