前言
前段时间看完了廖雪峰老师的Python基础, 开始的时候见内容很多,以为学完了就是大牛了,等一节一节的完成了所有的练习和作业才发现,这才刚入门。
考虑了一下方向,想往web方面发展,于是在众框架中选中了django,官网爬了3天,进度有点慢,虽然讲的确实细,但感觉很吃力,偶然发现了几个不错的网站
以下内容主线以参考刘江老师博客
我的环境都用的稳定版:
- python 3.6
- django 1.11
django本来更新到2.0了,结果在官网看到1.11是长期支持版本,支持时间远超2.0,于是又切回来了
本系列一共4篇,3篇是主线,还有一篇拓展外置MySQL数据库的,源码在这里
https://github.com/seeways/mysite
创建工程
其实项目创建还是比较简单的,结构都会自动创建好
django-admin startproject mysite
mysite/ # 项目容器
manage.py # 管理工具
mysite/ # 实际的项目
__init__.py # python包的初始化文件
settings.py # 主配置文件
urls.py # url路由
wsgi.py # 兼容性wsgi(网络通信接口)
如果用工具创建的话,会有templates文件夹,用来存放模板文件(html之类的)
创建app
python manage.py startapp cmdb
mcdb/ # app目录
__init__.py # app初始化文件
admin.py # 管理models
apps.py # app注册
migrations/ # db迁移文件夹
__init__.py
models.py # 模型
tests.py # 测试
views.py # 视图
编写路由
首先在mysite/urls.py
中定义路由
"""mysite URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/1.11/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: url(r'^$', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.conf.urls import url, include
2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
"""
from django.conf.urls import url
from django.contrib import admin
from cmdb import views # 导入对应app的视图文件
urlpatterns = [
url(r'^admin/', admin.site.urls), # 后台管理页面
url(r"^index/", views.index), # app路由 url(regex, view, kwargs=None, name=None)
]
-
r"^index/"
是自己定义的路由,正则匹配很重要 -
views.index
是导入的对应app的views模块的index函数
业务逻辑
路由已经有了,但是需要编写一点逻辑:进入cmdb/views.py
中
from django.shortcuts import render
from django.shortcuts import HttpResponse # 导入该模块
# Create your views here.
# 编写在路由中定义的index函数,参数为request
# (request 封装了用户请求的所有内容)
def index(request):
# 设置响应数据为简单的字符串
return HttpResponse("my first django today")
运行项目
命令行运行:
python manage.py runserver
默认 http://127.0.0.1:8000/
也可以自定义ip和端口
python manage.py runserver 127.0.0.1:8000
但是有个问题,在路由中只定义的两个接口,而且没有定义根接口,所以,应该这么访问
定义的字符串
http://127.0.0.1:8000/index
or
系统的管理后台
http://127.0.0.1:8000/admin