Django环境搭建之hello world
当我们想用Python来开发一个web应用时,首先要选择一个优秀的web框架,Django是个非常成熟的web开发框架,网上具有丰富的文档和学习资料,所以选择Django框架来入门web开发是个不错的选择,近段时间正好我也在学习Django框架,故记录下日常的学习。
环境准备:
Python:3.6.5
Django:2.0.7
pycharm
安装Django:
命令行使用pip来对Django进行安装:
- pip install django # 可以使用 pip install django==版本号 指定具体Django版本安装
Django安装完成后我们来验证下Django是否安装成功,命令行执行如下:
- liwenjideMacBook-Air:mysite liwenji$ python3
- Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 03:03:55)
- [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
- Type "help", "copyright", "credits" or "license" for more information.
- >>> import django
- >>> print(django.get_version())
- 2.0.7
- >>>
从上面的执行日志可以看出,我们安装的Django已经可以使用了,Django版本号为2.0.7,接下来我们就来使用Django创建web应用!
创建项目:
打开命令行,cd进入到你想存放代码的目录(我这里放在 /Users/liwenji/PycharmProjects/ 目录下),然后执行以下命令创建项目:
- django-admin startproject mysite # mysite 为项目名
运行上述命令之后就会在当前目录下创建一个mysite目录,让我们来看一下 startproject 命令为我们做了些什么,在pycharm中打开,项目层级如下:
- mysite/
- manage.py
- mysite/
- __init__.py
- settings.py
- urls.py
- wsgi.py
下面来介绍下这些目录和文件的作用:
- 最外层的mysite:项目的容器,可以任意命名;
- manage.py:一个让你用各种方式管理Django项目的命令行工具;
- 里面一层的mysite:包含我们的项目内容,是个纯Python包,它的名字就是当我们需要引用它内部任何东西时所需要的Python包名,例如(mysite.urls);
- mysite/__init__.py:这是一个空文件,用来告诉Python这个目录应该被认为是个Python包;
- mysite/setting.py:Django项目的配置文件;
- mysite/urls.py:Django项目的URL声明,就是网站的“目录”;
- mysite/wsgi.py:作为项目的运行在 WSGI 兼容的Web服务器上的入口
启动服务:
启动Django服务,cd进入到mysite目录下(跟manage.py同级的目录),执行以下命令:
- python3 manage.py runserver
# python3使用这个命令,因为我电脑上上安装了python2和python3两个版本,所以需要区分,如果电脑上只安装了python3,可以直接使用python manage.py runserver 来启动服务。
执行上面的命令后,我们就可以在命令行窗口看到:
- liwenjideMacBook-Air:mysite liwenji$ python3 manage.py runserver
- 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.
- November 27, 2018 - 11:48:15
- Django version 2.0.7, using settings 'mysite.settings'
- Starting development server at http://127.0.0.1:8000/
- Quit the server with CONTROL-C.
启动后可以看到 Starting development server at http://127.0.0.1:8000/,浏览器中访问 http://127.0.0.1:8000/ :
我们访问成功了,说明服务启动没有问题!
使用上述命令启动Django服务,Django默认端口为8000,如果想更换端口可以使用:
- python3 manage.py runserver 8080
如果你想同一个局域网类的其他电脑也能访问你的服务器,那么可以使用下面的命令来监听所有IP,访问的时候使用电脑IP代替127.0.0.1:
- python3 manage.py runserver 0:8000 # 0 是 0.0.0.0的简写
注意:
- 使用python3 manager.py runserver 命令启动的服务属于Django自带的开发服务器,它是个用纯Python写的轻量级web服务,将这个服务器内置在Django中是为了让我们快速开发出想要的东西而不需要进行任何生产环境的配置,例如Apache,切记千万不能将这个服务器用于生产环境;
- 使用python3 manager.py runserver 命令启动的服务是个会自动重新加载的runserver:这个服务器会在需要的情况下对每一个请求重新加载一次Python代码,所以我们不需要为了让修改的代码生效而频繁的重新启动服务器。但是,一些操作还是需要我们自动手动启动服务器的,比如说,新增文件,这就不会触发自动加载;
创建应用:
首先我们先来弄明白 项目 与 应用 的区别:应用是用来专门做某件事情的网络应用程序---比如说博客系统、投票程序;项目则是一个网站使用的配置和应用的集合,项目可以包含多个应用,应用可以被多个项目使用。
在Django中,每个应用都是一个Python包,并且遵循着相同的约定。Django有个便捷的工具可以帮助我们来生成应用的基础目录结构,而不用我们去关注如何创建目录。
同样,确保我们在manage.py的同级目录下,然后使用下面的命令来创建一个应用:
- python3 manage.py startapp polls # polls 表示应用名称
这个命令将会创建一个名为 polls 的应用,目录结构为:
- polls/
- __init__.py
- admin.py
- apps.py
- migrations/
- __init__.py
- models.py
- tests.py
- views.py
上面的目录包含了这个应用的全部内容,目前的项目结构为:
当应用创建好之后,就需要在项目目录下的settings.py文件中的INSTALLED_APPS中注册该应用:
- INSTALLED_APPS = [
- 'django.contrib.admin',
- 'django.contrib.auth',
- 'django.contrib.contenttypes',
- 'django.contrib.sessions',
- 'django.contrib.messages',
- 'django.contrib.staticfiles',
- 'polls', # 应用名称
- ]
编写视图:
打开polls/views.py,输入以下代码:
- from django.http import HttpResponse
- # Create your views here.
- def index(request):
- return HttpResponse("hello world. we are arrive at polls")
这是Django中最简单的视图,如果想要看到效果,我们还需要将一个URL映射到这个视图函数,这就是我们为什么需要URLConf的原因;
为了创建URLConf,我们在polls应用里创建一个urls.py文件,这个时候我们的应用目录结构应该为:
在polls/urls.py文件中,我们输入以下代码:
- from django.urls import path
- from polls import views
- urlpatterns = [
- path('', views.index, name='index'),
- ]
接下来我们就要在 根URLConf 文件中指定我们刚刚创建的 polls.urls 模块。在mysite/urls.py 的 urlpatterns 列表中插入 include(),如下:
- from django.contrib import admin
- from django.urls import path, include
- urlpatterns = [
- path('admin/', admin.site.urls),
- path('polls/', include('polls.urls'))
- ]
我们现在把 index视图添加到URLConf中了,现在可以来验证下视图是否正常工作了,命令行窗口中输入:
- python3 manage.py runserver
然后用浏览器访问 http://127.0.0.1:8000/polls/ ,我们应该就能在浏览器中看到 "hello world. we are arrive at polls",这个输出内容就是我们在index视图中定义的。
include()函数:这个函数允许我们引用其他应用的URLConf。每当Django遇到 fun: ~ django.urls.include 时,它就会截断与此项匹配的URL部分,并将剩余的字符串发送到 URLConf 中进行进一步的处理。
include()函数的设计理念:即插即用。因为polls应用有自己的URLConf (polls/urls.py),他可以被放在'polls','polls/content','pollsapplication'等任意其他的目录下,这个应用都能正常的工作。
什么时候该使用include()函数:当我们需要包括其他的URL 模式时我们都应该使用 include()函数,当然 admin.site.url 是唯一例外的。
path()函数:
path()函数有四个参数,其中两个必须参数:route和view;两个非必须参数:kwargs和name。
- route:route是个匹配URL的准则(类似于正则表达式)。当Django响应一个请求时,它会从 urlpatterns 中的第一项开始匹配,按顺序从上往下依次匹配列表中的项,直到找到匹配的项;需要注意的是这个准则不会匹配get和post参数和域名,例如URLConf处理请求https://127.0.0.1/polls/ 时,它会匹配 polls/。处理请求 https://127.0.0.1/polls?id=1 时,它也只匹配 polls/。
- view:当Django找到一个匹配的准则后,就会调用这个特定的view视图函数,并传入 HttpRequest 对象作为第一个请求参数,将被"捕获"的参数以关键字参数的形式传入。后面我们会介绍。
- kwargs:任意个关键字参数可以作为一个字典传递给目标视图函数。
- name:这个参数是给我的URL取个名字,以方便我们在Django的任意地方唯一的引用它,name参数在模板中使用的效果是最为明显的。这个特性的出现使我们可以只修改一个文件就能全局的修改某个URL模式。
到此,我们Django框架使用的第一步hello world就已经完成啦!
Django环境搭建之hello world的更多相关文章
- python web框架之django环境搭建
一.django环境搭建 https://www.djangoproject.com/download/ 下载适合自己的版本,在右边有压缩包版本的,也可以到git上去拽.我用的python27,下载的 ...
- Python之Django环境搭建(MAC+pycharm+Django++postgreSQL)
Python之Django环境搭建(MAC+pycharm+Django++postgreSQL) 转载请注明地址:http://www.cnblogs.com/funnyzpc/p/7828614. ...
- Django环境搭建(二)
web框架 本质就是socket服务端 socket服务端:是计算机科学家在TCP/IP基础上进行封装,暴露出一个接口socket,就是一个收发数据的一个接口. 对于真实的web程序来说分为两部分:服 ...
- 基于Centos搭建Django 环境搭建
CentOS 7.2 64 位操作系统 安装 Django 先安装 PIP,再通过 PIP 安装 Django 安装 PIP cd /data; mkdir tmp; cd tmp; wget htt ...
- Windows下Django环境搭建
总体示意图如下: Windows下搭建Django环境 1.安装Python版本 2.安装pip工具,一般Python安装都会自动会有这个,在你python安装命令下Scripts文件夹下 3.dj ...
- Django环境搭建(一)
搭建Django环境之前先搭建python运行环境 需要了解: 解释器(编译器): 计算机不能直接理解任何除机器语言外的其他语言,所以程序员必须要把自己写的语言翻译成机器语言,而将其他语言翻译成机器语 ...
- django环境搭建(基于anaconda环境)
环境:win7,anaconda,python3.5 1.介绍 Django特点:具有完整的封装,开发者可以高效率的开发项目,Django将大部分的功能进行了封装,开发者只需要调用即可,如此,大大的缩 ...
- python学习之——django环境搭建
Django是一个基于MVC构造的框架,用于web开发,主要目的是简便.快速的开发数据库驱动的网站. 前提:已经安装python 搭建步骤: 1.https://www.djangoproject.c ...
- python django 环境搭建
一. 版本选择 Django 1.5.x 支持 Python 2.6.5 Python 2.7, Python 3.2 和 3.3. Django 1.6.x 支持 Python 2.6.X, 2.7 ...
- python:mysql+pycharm+Django环境搭建
1.安装mysql-python 环境:OS X Yosemite10.10.2 + Python2.7 首先网上搜了下mysql-python,说要先安装mysql客户端,然后改配置文件,可是各种改 ...
随机推荐
- 我所理解的 PHP Trait
Trait 是从 PHP 5.4 加入的一种细粒度代码复用的语法.以下是官方手册对 Trait 的描述: Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制.Trait 为了减少单继承 ...
- Java 设计模式系列(十五)观察者模式(Observer)
Java 设计模式系列(十五)观察者模式(Observer) Java 设计模式系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) Java ...
- C#多线程数据分布加载
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 使用junit单元测试SpringMvc
对于有依赖关系的方法,junit测试会有些麻烦,可以用@before @after之类的创建数据库连接,然后进行测试,但是有些太麻烦了. 所以就使用一下这个:org.springframework.t ...
- (转)centos liveCD liveDVD netinstall minimal DVD1 DVD2 版本区别
LiveCD 和 LiveDVD 是可以直接光盘运行系统,但不能安装,两者差别在于容量大小,dvd包含的软件要多一些. netinstall 是用于网络安装和系统救援的镜像文件. minimal 这个 ...
- 如何使用Word2016或Office365中的word撰写博客并发布
目前大部分的博客作者在用Word写博客这件事情上都会遇到以下3个痛点: 1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.使用Word写 ...
- Hdu4280 Island Transport 2017-02-15 17:10 44人阅读 评论(0) 收藏
Island Transport Problem Description In the vast waters far far away, there are many islands. People ...
- D3 datum()
datum()和data()功能类似. datum():将指定数据赋值给被选择元素.data():将数据数组与选择集的元素结合. var p = d3.selectAll('p'); p.datum( ...
- 自我介绍及注册github和上传文件
自我介绍: 周侃 年龄20 喜好:玩游戏,赚钱,交际 理想:想要改变中国手游界颓靡的时代,让它进入新次元. 注册github,以及上传文件: 今天给大家来讲解下如何注册githup 当我们打开gith ...
- 利用SQL表生成按日期序列的唯一ID
1. 创建一个表,用于存现在最大的ID SELECT [ID],[PreFix],[Code] FROM [DocumentNO] 2. 增加SP,利用锁表,生成相应的ID Create PROCED ...