Django
Django是一个开放源代码的Web应用框架,由Python写成。是目前最流行的使用Python语言的Web开发框架,国内的豆瓣网、果壳网等都是使用Django框架。Django 的主要目的是简便、快速的开发数据库驱动的网站。
安装Django
$ sudo pip install django
$ sudo pip install django==1.10 #指定版本号
创建Django工程
$ django-admin startproject mysite
工程目录如下:
mysite/
├── manage.py
└── mysite
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
- manage.py :管理项目的命令行工具,如启动服务器,生成数据库等都使用它来完成。
- mysite: :工程的实际python模块目录.
- settings.py :工程的配置文件.
- urls.py :URL映射配置文件.
- wsgi.py :django可以使用其他web服务器,如apache。WSGI是web服务器和我们django应用程序的接口点。
可以通过命令启动服务器:
$ python manage.py runserver
$ python manage.py runserver 8000 #指定port
$ python manage.py runserver 0.0.0.0:8000 #指定ip和port
创建应用:
一个django工程可以根据功能划分为多个应用,比如一个网站有新闻内容,也可以写博客。那么可以创建俩个应用news和blog。
$ python manage.py startapp blog
应用目录内容如下:
blog/
├── admin.py
├── apps.py
├── __init__.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
└── views.py
视图 view
view文件中放置我们写的python函数,它们是响应一个客户http请求的逻辑。
比如客户访问http://www.xxx.com/home这个url, 我们将处理这个请求的逻辑(返回一个页面)放在一个view函数中.
blog/views.py :
from django.http import HttpResponse
def blogPage(request):
html = '<html><body>Welcom to my blog.</body></html>'
return HttpResponse(html)
URL配置
客户访问的url由哪个具体view函数来处理, 我们需要在urls.py中进行配置.
mysite/urls.py :
from django.conf.urls import url
from blog.views import blogPage
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^blog', blogPage),
]
mysite/urls.py是总入口, 也可以一级一级路由, 我们在blog下创建一个urls.py, 把一个应用url映射配置在应用的urls文件里.
blog/urls.py :
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.blogPage),
]
mysite/urls.py :
from django.conf.urls import url, include
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^blog/', include('blog.urls')),
]
模型model
blog/model.py :
class Blog(models.Model):
title = models.CharField(max_length=150)
body = models.TextField()
timestamp = models.DateTimeField()
django根据models文件中定义的类对象,为我们在数据库中建立相应的table。
django可以轻松配置使用各种数据库, 默认情况使用的是SQLite。可以通过编辑settings.py进行配置。
mysite/settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}