django2.0入门教程第一节

什么django

django是用python语言写的一个web框架。web框架的作用有以下几点:

  • 减少重复的繁琐的工作,web开发中有很多重复的没有技术含量的工作,web工作可以将这些工作封装好,或者自动化实现
  • 提供标准与规范,便于开发人员合作。如果不用web框架,每个开发人员的代码风格都不一致,增加很大的沟通成本
  • 提供了更加安全健壮的底层架构,即使是初入门的程序员,只要按照框架的规范开发,也能快速完成一个不错的成品

以建房子为比喻,如果每个建筑工都以自己的想法去建,而且要负责所有的流程,包括打地基,建柱子,垒砖头等。这种造出来的房子肯定是又丑又不坚固。如果这个房子的地基已经打好了,基本的架构都弄好了,材料也都提供好了,建筑工只需要按照规范在这个基础上加砖头,即使是刚出道的小工,也能胜任。

总之,框架的作用就是让我们把事情做得又快又好。

本教程以django2.0为框架,搭建一个简易的投票系统,主要参考 django2.0的官方文档

通过此教程,将实现一个基本的投票应用

包括两个部分:

  • 前台:用户可在前台看到所有候选者并进行投票

  • 后台:管理员可在后台对候选者和投票选项进行增删改查

注册django2.0

注册django2.0, 要求python版本不低于3.4

$ pip install  django

验证django版本有两种方式:

$ python
Python 3.6.2 (default, Dec  3 2017, 10:41:29)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> print(django.get_version())
2.0
$ python -m django --version
2.0

创建项目

$ django-admin startproject mysite

项目相当于django的一个实例,包含了所有配置文件以及所有应用

项目名称在命名时应避免使用python内置的关键字或者django的模块组件名。如,不能将项目命名为django,这将会与Django自身冲突,也不能将项目命名为test,会与python内置的test模块冲突

目录结构:

$ cd mysite 
$ tree
.
├── manage.py
└── mysite
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

文件名释义:

  • manage.py 实用的与django项目进行交互的命令行工具
  • mysite 项目中的实际python包
  • mysite/__init__.py 空文件,表示这是一个python包
  • mysite/settings.py 此项目的配置文件
  • mysite/urls.py url声明文件
  • mysite/wsgi.py wsgi服务器的配置文件

启动开发模式下的服务器

$ python manage.py runserver 0.0.0.0:8000
Performing system checks...

System check identified no issues (0 silenced).

You have 14 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

December 29, 2017 - 07:14:27
Django version 2.0, using settings 'mysite.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.

启动服务后会提示你还没有进行数据迁移。这点先忽略,后面会讲到

浏览器访问:http://127.0.0.1:8000/

就能看到django的欢迎页

welcome.png

至此,我们已经启动了python的开发服务器,这是一个纯粹用python写的web服务器,仅用于开发模式下。当我们修改代码时,一般情况下这个开发服务器会自动重新加载。但有些行为可能触发不到开发服务器的自动加载,这时就需要我们手工重新启动

创建投票应用

项目与应用的区别:一个项目中可以包含多个应用,应用是指功能性的划分模块。如一个电商网站可以作为一个项目,其中的日志系统,购物车系统都可以分割成独立的应用

在manage.py的同级目录下执行:

$ python manage.py startapp polls

应用的目录结构:

polls
├── admin.py
├── apps.py
├── __init__.py
├── migrations
│   └── __init__.py
├── models.py
├── tests.py
└── views.py

第一个视图文件

polls/views.py

#_*_coding:utf8_*_
from django.shortcuts import HttpResponse
def index(request):
    return HttpResponse("你好,欢迎来到投票系统的主页")

这是一个极简单的视图文件,为了让浏览器能访问到这个视图文件,我们需要配置url映射到这个文件

配置url

新增polls/urls.py文件

#_*_coding:utf8_*_
from django.urls import path
from . import views
urlpatterns = [
    path('', views.index, name='index'),
]

下一步是将polls/urls.py引入到mysite/urls.py文件中, 因为所有的url配置入口都是源于mysite/urls.py

mysite/urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

访问 http://127.0.0.1:8000/polls/

显示:

你好,欢迎来到投票系统的主页

include()函数允许django引入其他url配置文件,当浏览器访问 http://127.0.0.1:8000/polls/ 时,匹配到url规则path('polls/', include('polls.urls')), 然后读到polls/urls.py的配置:path('', views.index, name='index'), 从而去执行polls/views.py的index方法

源码下载

源码仓库

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容