Django 在新一代的 Web框架 中非常出色
使用Python开发Web,最简单,原始和直接的办法是使用CGI标准,可以用WSGI接口
运行WSGI服务
我们先编写hello.py
,实现Web应用程序的WSGI处理函数:
# hello.py
def application(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/html')])
return [b'<h1>Hello, web!</h1>']
然后,再编写一个server.py
,负责启动WSGI服务器,加载application()
函数:
# server.py
# 从wsgiref模块导入:
from wsgiref.simple_server import make_server
# 导入我们自己编写的application函数:
from hello import application
# 创建一个服务器,IP地址为空,端口是8000,处理函数是application:
httpd = make_server('', 8000, application)
print('Serving HTTP on port 8000...')
# 开始监听HTTP请求:
httpd.serve_forever()
然后在目录下命令行输入python server.py
来启动WSGI服务器,浏览器页面输入127.0.0.1:8000即可访问
这样做的缺点就是,代码不好重用,无法连接数据库,页面调样式麻烦
从头开始编写网络应用程序。
从头编写另一个网络应用程序。
从第一步中总结(找出其中通用的代码),并运用在第二步中。
重构代码使得能在第 2 个程序中使用第 1 个程序中的通用代码。
重复 2-4 步骤若干次。
意识到你发明了一个框架。
二、Django使用
MVC 设计模式
关键的4个文件(models.py , views.py , urls.py ) 和html模板文件 (template.html )
models.py 文件主要用一个 Python 类来描述数据表。 称为 模型(model) 。 运用这个类,你可以通过简单的 Python 的代码来创建、检索、更新、删除 数据库中的记录而无需写一条又一条的SQL语句。
views.py文件包含了页面的业务逻辑。 latest_books()函数叫做视图。
urls.py 指出了什么样的 URL 调用什么的视图。
template.html 是 html 模板,它描述了这个页面的设计是如何的。
结合起来,这些部分松散遵循的模式称为模型-视图-控制器(MVC)。
urls.py中添加
from django.contrib import admin
from mysite1 import views
from django.conf.urls import url
urlpatterns =[
url(r'^contact/$', views.contact_result),
url(r'^contact-form/$', views.contact),]
views.py中添加
from django.http import HttpResponse, Http404
import datetime
from django.template import Template, Context
from django.shortcuts import render_to_response
from django.template.loader import get_template
from books.models import Book
from django.core.mail import send_mail
from django.http import HttpResponseRedirect
def contact(request):
errors = []
if request.method == 'POST':
if not request.POST.get('subject', ''):
errors.append('Enter a subject.')
if not request.POST.get('message', ''):
errors.append('Enter a message.')
if request.POST.get('email') and '@' not in request.POST['email']:
errors.append('Enter a valid e-mail address.')
if not errors:
send_mail(
request.POST['subject'],
request.POST['message'],
request.POST.get('email', 'noreply@example.com'),
['siteowner@example.com'],
)
return HttpResponseRedirect('/contact/thanks/')
return render_to_response('contact_form.html',
{'errors': errors})
def contact_result(request):
return render_to_response('contact.html')
template文件中添加contact.html
template文件中添加contact_form.html
{% if errors %}
<ul>
{% for error in errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
<form action="/contact/" method="post">
<p>Subject: <input type="text" name="subject"></p>
<p>Your e-mail (optional): <input type="text" name="email"></p>
<p>Message: <textarea name="message" rows="10" cols="50"></textarea></p>
<input type="submit" value="Submit">
</form>
启用服务,浏览器中访问http://127.0.0.1:8000/contact/
点击submit,跳转到contact.html页面
手机扫一扫
移动阅读更方便
你可能感兴趣的文章