在创建项目之前要先了解一下项目环境概念。
首先注意一下Python与Django版本,本系列是基于Django2.0以后,所以对应的Python版本至少是3.4。
正是由于Python3与Python2版本之间区别比较大,并且Python3并不会向下兼容Python2,所以对于不同的项目要使用不同的环境开发,所以在创建此项目之前,创建一个新的环境。
使用Anaconda Prompt 工具
1.查看环境列表
conda env list
展示位环境名称 环境目录,在目录前面的星号代表此时应用的环境
2.创建环境
在Python安装目录/envs/中执行下面命令,创建一个my_env的环境
conda create -n my_env
创建之后会在envs目录中创建一个my_env的文件夹
3.激活环境
activate my_env
激活环境之后在输入查看环境列表命令,星号会移到刚才激活的环境目录前,说明此时应用刚才激活的环境
ps:每次重启Anaconda Prompt 工具,需要重新激活
4.安装安装Django
conda install django
5.创建项目
先指定一个项目的目录(工作空间),cd到对应目录
django-admin startproject mysite .
这行代码将会在当前目录下创建一个 mysite 目录,让我们看看 startproject创建了些什么:
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
这些目录和文件的用处是:
manage.py
: 一个让你用各种方式管理 Django 项目的命令行工具。mysite/
目录包含你的项目,它是一个纯 Python 包。它的名字就是当你引用它内部任何东西时需要用到的 Python 包名。 (比如 mysite.urls
).mysite/__init__.py
:一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包。mysite/settings.py
:Django 项目的配置文件mysite/urls.py
:Django 项目的 URL 声明,就像你网站的“目录”。mysite/wsgi.py
:作为你的项目的运行在 WSGI 兼容的Web服务器上的入口。6.启动项目
查看项目是否创建成功,在mysite/目录项,即manage.py同级目录下执行如下命令
python manage.py runserver
将会打印
Performing system checks...
System check identified no issues (0 silenced).
You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.
十月 01, 2018 - 15:50:53
Django version 2.0, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
刚刚启动的是 Django 自带的用于开发的简易服务器,它是一个用纯 Python 写的轻量级的 Web 服务器。我们将这个服务器内置在 Django 中是为了让你能快速的开发出想要的东西,因为你不需要进行配置生产级别的服务器(比如 Apache)方面的工作,除非你已经准备好投入生产环境了。
现在是个提醒你的好时机:千万不要 将这个服务器用于和生产环境相关的任何地方。这个服务器只是为了开发而设计的。(我们在 Web 框架方面是专家,在 Web 服务器方面并不是。)
现在,服务器正在运行,浏览器访问 https://127.0.0.1:8000/。你将会看到一个“祝贺”页面,随着一只火箭发射,服务器已经运行了。
更换端口
默认情况下,runserver
命令会将服务器设置为监听本机内部 IP 的 8000 端口。
如果你想更换服务器的监听端口,请使用命令行参数。举个例子,下面的命令会使服务器监听 8080 端口:
python manage.py runserver 8080
7.创建应用
刚才所创建的项目实际上是创建的开发环境,在 Django 中,每一个应用都是一个 Python 包,并且遵循着相同的约定。Django 自带一个工具,可以帮你生成应用的基础目录结构,这样你就能专心写代码,而不是创建目录了。
项目 VS 应用
项目和应用有啥区别?应用是一个专门做某件事的网络应用程序——比如博客系统,或者公共记录的数据库,或者简单的投票程序。项目则是一个网站使用的配置和应用的集合。项目可以包含很多个应用。应用可以被很多个项目使用。
你的应用可以存放在任何 Python path中定义的路径。而在这里,我们将在 manage.py
同级目录下创建博客应用。这样它就可以作为顶级模块导入,而不是 mysite
的子模块。
确定现在处于 manage.py
所在的目录下,然后运行这行命令来创建一个应用:
python manage.py startapp blog
将会创建一个blog的目录,目录结构如下
blog/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
打开blog/views.py,输入一下代码
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world.")
这是 Django 中最简单的视图。如果想看见效果,我们需要将一个 URL 映射到它——这就是我们需要 URLconf 的原因了。
为了创建 URLconf,请在 blog目录里新建一个 urls.py
文件。你的应用目录现在看起来应该是这样:
blog/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
urls.py
views.py
在urls.py输入如下代码
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
下一步是要在根 URLconf 文件中指定我们创建的 blog.urls
模块。在 mysite/urls.py
文件的 urlpatterns
列表里插入一个 include()
, 如下:
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('blog/', include('blog.urls')),
path('admin/', admin.site.urls),
]
函数 include()允许引用其它 URLconfs。每当 Django 遇到 :func:~django.urls.include 时,它会截断与此项匹配的 URL 的部分,并将剩余的字符串发送到 URLconf 以供进一步处理。
设计 include()的理念是使其可以即插即用。因为应用有它自己的 URLconf( blog/urls.py
),他们能够被放在 "/blog/" , "/fun_blog/" ,"/content/blog/",或者其他任何路径下,这个应用都能够正常工作。
启动项目,在manage.py同级目录下执行
python manage.py runserver
用你的浏览器访问 http://localhost:8000/blog/
将会在页面中输出Hello, world.
项目地址(码云):传送门