好多人纠结使用python2.x 还是使用python3.x 更好些,博主还没有站到很高高度来分析这件事,况且从来都是喜则偏,但可以肯定的说,截至目前为止,django已经版本已经出到了2.1.4。本人使用的python3.7.0。完美运行。
在开始之前可以阅读下这篇博客:https://www.jianshu.com/p/b9fdc977bb96 说的比较到位。
正题
1.django 安装
pip install django [==版本号]
中括号可以指定要安装的版本,如果有特定要求的话。
pip show djngo 可以查看是否安装成功,并展示版本号以及相关信息。
2.django工程创建
django框架是基于python 语言 得一个mvc 框架,帮我们搭好web 框架,更好得让我们致力于要做的逻辑和业务代码。
在cmd 中执行如下命令,创建项目架构
django-admin startproject 项目名称
创建完成后使用你得编辑器打开项目,结构如下:
blogproject\
manage.py
blogproject\
__init__.py
settings.py
urls.py
wsgi.py
blogproject\ 目录是我们刚刚指定的工程目录。blogproject\ 目录下面有一个 manage.py 文件,manage 是管理的意思,顾名思义 manage.py 就是 Django 为我们生成的管理这个项目的 Python 脚本文件.
与 manage.py 同级的还有一个 blogproject\ 的目录,这里面存放了一些 Django 的配置文件,例如 settings.py、urls.py 等等。
其中:setting,py 设置项目相关得设置属性文件,urls.py 管理连接。
3.项目运行
在项目根目录下执行如下命令
python manage.py runserver
看到如下提示,就表明项目成功运行。
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
4.自定义项目应用
以上我们成功运行了django web 项目,但这只是一个初始化的内容,那么我们需要在该项目中创建一个自己想要的应用怎么办?
Django 鼓励我们把自己编写的代码组织到应用(Application)里,并且最好是一个应用只提供一种功能。例如我们要开发的 Django 博客,相关的代码都放在 blog 这个应用里。其实应用也没什么复杂的,不过是把功能相关的代码组织到一个文件夹里,这个文件夹就成了一个应用(姑且可以这样理解)。
我们可以在 Django 工程目录下手动地建立一个文件夹,为它取个名字,并且告诉 Django 说这是一个应用。但是我们不必做这些无聊的工作,Django 已经为我们提供了自动创建应用的命令,进入到 manage.py 文件所在的目录下,运行 如下命令即可建立一个 blog 应用:
python manage.py startapp 应用名称
使用idea 打开项目工程如下结构展示,会多出一个blog文件夹:
此时我们的django 项目还不知道我们创建了一个blog的应用,那么我们就需要在setting中去做配置,找到 INSTALLED_APPS
设置项,将 blog 应用添加进去:
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
]
在该配置中我们还可以看到,初始化的框架帮我做了那些事情,创建了管理员应用,权限应用,内容编辑,消息等应用。
创建完成后我们需要创建自己的mvc视图。首先需要在blog应用中添加urls.py 作为该应用独有的urls 管理器,并将该管理器添加到项目urls 管理中。
from django.conf.urls import url, include
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls),
url(r'blog/', include('blog.urls')),
url(r'', include('blog.urls')),
]
然后我们添加我们的view视图,它支持两种方式:
1.index 继承了request 方法,直接返回一个相应结果:HttpRespsonse()
from django.http import HttpResponse
from django.shortcuts import render
def index(request):
return HttpResponse("欢迎访问我的博客网站!")
最后我们设置blog应用的urls 管理,运行还项目,就看到我们自己的blog 应用成功运行。
from django.conf.urls import url
from . import views
"""
比如说我们本地开发服务器的域名是 http://127.0.0.1:8000,
那么当用户输入网址 http://127.0.0.1:8000 后,Django
首先会把协议 http、域名 127.0.0.1 和端口号 8000 去掉,
此时只剩下一个空字符串,而 r'^$' 的模式正是匹配一个空字符串
(这个正则表达式的意思是以空字符串开头且以空字符串结尾),
于是二者匹配,Django 便会调用其对应的 views.index 函数
"""
urlpatterns = [
url(r'^$', views.index, name='index'),
]
但是,
我们看到在视图函数里返回的是一个 HttpResponse
类的实例,我们给它传入了一个希望显示在用户浏览器上的字符串。但是我们的博客不可能只显示这么一句话,它有可能会显示很长很长的内容。比如我们发布的博客文章列表,或者一大段的博客文章。我们不能每次都把这些大段大段的内容传给 HttpResponse
。
Django 对这个问题给我们提供了一个很好的解决方案,叫做模板系统。Django 要我们把大段的文本写到一个文件里,然后 Django 自己会去读取这个文件,再把读取到的内容传给 HttpResponse
。让我们用模板系统来改造一下上面的例子。
from django.http import HttpResponse
from django.shortcuts import render
from blog.models import Post
def index(request):
return render(request, "blog/index.html", context={
'title': '我的博客首页',
'welcome': '欢迎访问我的博客首页',
这时候我们需要在项目根目录下创建一个管理页面资源的文件,并将该项目的默认资源路径设置为该路径根目录:
并添加前端资源,index.html 以及其渲染资源css ,js。运行项目后查看该页面。