Django是一个轻量且强大的python web 模块, 能够节省大量的底层开发时间,而使得开发者专注于前端布局,这是我根据官网手册的第一次尝试性建站。
首先是Django的安装, 这里提及到了之前我没怎么关注过的概念,virtualenv的问题,暂时没管那么多。 需要上心的是,对于需要经常使用py的我来说,virtualenv的功能不可小觑。
安装很简单: pip install django
安装之后测试: python -m django --version 我的版本是1.11.6, 属于1.11。
然后寻找一个比较干净的目录,建立自己的第一个项目:
django-admin startproject myproject
得到创建好的项目目录,目录名是myproject,里面组成:
mysite : 项目容器
├── manage.py :提供多种跟项目交流的方式的命令行实用工具
└── mysite :项目的python包
├── __init__.py :python包的标识脚本文件
├── settings.py :对本项目的设置脚本文件
├── urls.py :本项目中的url地址声名文件,网站的目录脚本
└── wsgi.py :兼容WSGI的web服务器的入口点
Now’s a good time to note: don’t use this server in anything resembling a production environment. It’s intended only for use while developing. (We’re in the business of making Web frameworks, not Web servers.)
不要在任何跟产品环境相似的情况中使用该服务器(http://127.0.0.1:8000/),我们重点是构建web框架而不是服务器。
端口修改: python manage.py runserver (端口编号8080)或者(端口范围0:8080)
python代码会被自动load而不需要重启server,但有些诸如添加文件等操作就需要重启server。
有必要分清楚一下project跟app的关系: 一个project可以有多个app, 一个app也可以被多个project调用。
上面的过程首先由django产生了一个web框架基本的目录和元件组成,而后在local服务器上运行来起来,下面的过程是编码产生app并且对app进行优化和完善。
确保工作目录在容器内,而在mysite的包外。
python manage.py startapp polls
执行后目录树变为: 文件介绍先暂时放一下。
├── db.sqlite3
├── manage.py
├── mysite
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── settings.py
│ ├── settings.pyc
│ ├── urls.py
│ ├── urls.pyc
│ ├── wsgi.py
│ └── wsgi.pyc
└── polls : polls app的python模块所在目录,不能修改
├── __init__.py : 标识
├── admin.py :
├── apps.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
└── views.py : 页面?
进行第一个view的编写:
在views.py 中添加
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
对于每一个view,都需要有个url以供浏览器寻找和调用,所以下一步配置APP中的url
touch ./polls/urls.py
在urls.py中添加
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.index, name='index'),
]
之后需要从项目中创建到app中url的指向url:
The next step is to point the root URLconf at the polls.urls module. In mysite/urls.py, add an import for django.conf.urls.include and insert an include() in the urlpatterns list,
往mysit/urls.py中添加
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
url(r'^polls/', include('polls.urls')),
url(r'^admin/', admin.site.urls),
]
这个时候要进行预览的话,应在地址后面加上/polls。(这里原来是这样)
搞完以上的这些之后, 投票APP的外壳就有了, 而且也跟本次项目链接起来了,下面就是对应用内元件进行填充。
在这里应该熟悉一下mysite/settings.py 里的内容, INSTALLED_APP 里已经包括了几个自带的APP。-先挖坑。
现在为polls创建两个元件,称之为model, django自带model类,应用内的类继承自models:这里的类是指数据+区域
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
上面的代码继承自django数据库中的models类,创建了两个类,每个类中有两个model,也就是两种数据+区域,其