一、查看Django是否安装

参考文档:https://docs.djangoproject.com/en/1.11/intro/tutorial01/

如果Django已经安装,可以看到安装的版本号,如果没有安装则会看到“No module named django”的错误。

MacBook-Pro:~ h$ python3 -m django --version
1.11.11

二、创建一个项目

从命令行创建Django项目

django-admin startproject mysite

会在当前目录下生成一个mysite目录。

注意:给项目命名的时候,项目名称不能和Pychon或Django的内部组件名称同名。尤其,应该避免使用类似test(与Django自身冲突)或者django(与Python内建的包冲突)这个的名称。

startproject生成以下文件

MacBook-Pro:PycharmProjects h$ tree mysite
mysite
├── manage.py
└── mysite├── __init__.py├── settings.py├── urls.py└── wsgi.py1 directory, 5 files

文件含义:

  • 外层的mysite/根目录仅仅是项目的一个容器。这个名字与Django无关,可以将其命名为任何内容(只要不和Django内置名称冲突)。
  • manage.py:一个命令行工具,可以是你用多钟方式对Django项目进行交互。可以在django-admin和manage.py中读到关于manage.py的所有细节。
  • 内层的mysite/目录是你的项目的真正的Python包。它是你导入任何东西时将需要使用的Python包的名字(例如:mysite.urls)。
  • mysite/__init__.py:一个空简介,它告诉Python这个目录应该被看作一个Python包。
  • mysite/settings.py:该Django项目的设置/配置。Django settings将告诉你这些设置如何工作。
  • mysite/url.py:此Django项目的URL声明:Django驱动的网址的“目录”。
  • mysite/wsgi.py:用于你的项目的与WSGI兼容的Web服务器入口。

启动服务

切换到mysite目录内,执行以下命令:

python3 manage.py runserver

命令输出为以下内容:

Performing system checks...System check identified no issues (0 silenced).You have 13 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.June 12, 2018 - 13:04:52
Django version 1.11.11, using settings 'mysite2.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

注意:暂时忽略有关未应用数据库迁移的告警;我们很快就处理数据库。

你已经开始使用Django开服务器,这是一个纯粹用Python编写的轻量级Web服务器。在Django中包含了这个功能,所以您可以快速开发,而无需处理配置生产服务器(如Apache),

直到你准备上线。

注意:此服务器仅供开发时使用。

现在服务器正在运行,请使用浏览器访问http://127.0.0.1:8000/,你将看懂一个"Welcom to Django"的页面。如下图所示:

更改默认端口

默认情况下,runserver命令在内部IP的8000端口启动开发服务器。

如果需要改变服务器的端口,把要使用的端口作为一个命令行参数传递给它,示例:在端口8080上启动服务器:

python3 manage.py runserver 8080

如果需要改变服务器的IP地址,把IP地址和端口号防盗一起,例如:要监听服务器上所有IP地址:

python3 manage.py runserver 0:8000

0时0.0.0.0的快捷方式。

runserver自动重载

开发服务器会根据需要自动重新载入Python代码。不必为了使更改的代码生效而重启服务器,然而,一些行为:比如添加文件,不会出发服务器的重启,所以在这种情况下需要手动重启服务器。

创建一个应用程序

一个项目已经建立起来了。在编写每个Django应用都是遵循特定约定且包含一个Python包。Django自带一个工具,它可以自动生成应用的基本目录结构。

应用与项目的区别

项目与应用之间有什么不同?应用是一个Web应用程序,它完成具体的事项--比如一个博客系统、一个存储公共档案的数据库或者一个简单的投票应用。一个项目是特定网站的配置和应用程序的集合。一个项目可以包含多个应用。一个应用可以运用到多个项目中去。

要创建您的应用程序,请确保您位于相同的目录中manage.py、并输入以下命令:

python3 manage.py startapp polls

这将创建一个目录polls,其目录结构如下:

polls/
├── __init__.py
├── admin.py
├── apps.py
├── migrations
│   └── __init__.py
├── models.py
├── tests.py
└── views.py1 directory, 7 files

polls应用将基于这个目录结构。

我们来写第一个视图,打开文件pools/views.py,并在其中写入以下代码:

from django.http import HttpResponsedef index(request):return HttpResponse("Hello,world.You're at the polls index.")

要调用视图,我们需要将其映射到URL,因此需要一个url的配置文件。要在polls目录中创建url配置文件,创建一个名为urls.py。现在app(pools)目录下结构如下所示:

polls/
├── __init__.py
├── admin.py
├── apps.py
├── migrations
│   └── __init__.py
├── models.py
├── tests.py
├── urls.py
└── views.py1 directory, 8 files

在polls/urls.py文件中写入以下代码:

from django.conf.urls import url
from . import viewsurlpatterns = [url(r'^$',views.index,name='index'),
]

下一步是将根url.py指向polls.url模块,在mysite/urls.py中,添加对django.conf.url.include的导入,并在urlpatterns列表中插入一个include(),结果如下:

from django.conf.urls import url,include
from django.contrib import adminurlpatterns = [url(r'pools/',include('polls.urls')),url(r'^admin/', admin.site.urls),
]

include()方法允许引用其它URLconfs。注意:include()函数的正则表达式不具有$(字符串结束的匹配字符),而是使用尾部斜线进行表示。每当Django遇到include()时,它会排除

与此相同的任何部分,并将剩余的字符串发送到随附的URLconf进行进一步处理。

当你项目中包含其它URL模式时,应始终使用include()。admin.site.urls是唯一的例外。

何时使用include()

运行以下命令启动服务:

python3 manage.py runserver

在浏览器中访问http://127.0.0.1:8000/polls/

url()函数传递四个参数

两个必须的参数:正则表达式regex和视图view,两个可选项:kwargs和name。

url()argument:regex

正则表达式,它是用于匹配字符串中的模式的语法,或者在这种情况下是url模式。Django从第一个正则表达式开始,并将其放在列表中,将请求的URL与每个正则表达式进行比较,直到找到匹配的一个。
请注意,这些正则表达式不搜索GET和POST参数或域名。例如,在https://www.example.com/myapp/的请求中,URLconf将查找myapp/。在https://www.example.com/myapp/?page=3的请求中,URLconf同样查找myapp/。

url()argument:view

当Django发现正则表达式匹配时,Django将调用指定的视图函数,使用HttpRequest对象作为第一个参数,并将正则表达式中的任何“捕获”值作为其它参数。如果正则表达式使用简单的捕获,则值作为位置参数传递;如果它使用命名捕获,则值作为关键字参数传递。

url()argument:kwargs

任意关键字参数可以在字典汇总传递到目标视图

url()argument:name

命名你的URL可让你从Django其它地方明确地应用它,特别是在模版中。

转载于:https://www.cnblogs.com/hwlong/p/9175116.html

第一个Django应用程序_part1相关推荐

  1. Django教程:第一个Django应用程序(1部分)

    2019独角兽企业重金招聘Python工程师标准>>> Django教程:第一个Django应用程序(1部分) 请看实例.本教程中将创建一个基本的投票应用. 它由两部分组成:查看投票 ...

  2. 编写你的第一个Django应用程序

    本教程中,我们将带领你创建一个基本的投票应用. 它包含两部分: 一个公开站点,允许人们查看投票并对它们投票. 一个管理后台站点,允许你添加.更改和删除投票. 我们假设你已经安装好Django. 你可以 ...

  3. 很棒的 Django 应用程序、项目和资源的精选表单

    目录 管理界面 分析 资产管理 验证 授权 博客管理 样板 缓存 兼容性 客户关系管理 仪表盘 数据科学 数据库 调试 电子邮件 字段 文件传输 形式 地理信息系统 图像处理 进出口 迁移 移动支持 ...

  4. Pycharm+Django搭建第一个Python Web程序

    1.安装django 无论是Python2.x还是Python3.x版本,都可以使用pip来安装Django.在控制台使用如下命令:pip install django 如: 2.检查dgango是否 ...

  5. 学点简单的Django之第一个Django程序

    学点简单的Django之第一个Django程序 这里采用PyCharm专业版可以直接创建Django项目,这里面自动部署了Django的基本环境.在创建项目时选择Django项目: 第一次建立Djan ...

  6. 你的第一个Django程序

    本文使用Pycharm.Django 2.0.9.Python 3.6环境,本文大纲 建立Django项目 建立页面 什么是URLconf和ROOT_URLCONF Django怎么处理URL请求 关 ...

  7. 如何在CentOS 7上使用uWSGI和Nginx来运行Django应用程序

    @(tigerfive)[tigerfive][linux学习笔记][uwsgi][django][nginx] 前言 先决条件和目标 安装和配置VirtualEnv和VirtualEnvWrappe ...

  8. 都说Djnago框架重,那就让哥用15行代码写个django web程序!

    很多初学django的小伙伴都会了解到,django是个大而全的网络框架,本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能.要学这么多内容,要学到猴年马月啊!? 不过世界真是奇妙, ...

  9. python django部署docker_如何Docker化Python Django应用程序

    Docker是一个开源项目,为开发人员和系统管理员提供了一个开放平台,可以将应用程序构建.打包为一个轻量级容器,并在任何地方运行.Docker 会在软件容器中自动部署应用程序. Django 是一个用 ...

最新文章

  1. ASP .NET Core Web MVC系列教程三:添加视图
  2. Interpreter - 解释器模式
  3. android编译产生的apk或so不安装 .
  4. java 判断语句 性能_前端性能优化:js中优化条件判断语句
  5. python引入自己写的文件_python引入自己写的Py文件
  6. LeetCode题解
  7. 有几百万的房子,也吃不起西贝,感觉像在交税…….
  8. python最短路径例子_[python]dijkstra 算法的 加权的最短路径 案例
  9. 信息化案例:国家电投
  10. 最强的右键菜单工具:超级右键专业版 mac中文版
  11. matlab图形黎曼几何,黎曼几何不一致的定理—元数学与元物理学(22)
  12. BIOS知识枝桠—— Protocol
  13. centos linux安装网卡驱动,如何在CentOS系统下安装网卡驱动
  14. outlook电子邮件解析_在Outlook 2007中轻松重新发送电子邮件
  15. 无人驾驶技术入门(五)| 没有视觉传感器,还谈什么无人驾驶?
  16. Kubeconfig 切换上下文
  17. MIPS 指令集速查
  18. 快速分割多段视频,并分离视频和音频
  19. Python书籍阅读与记录 6.17 I 文件和异常
  20. Python编程PTA题解——验证“哥德巴赫猜想”

热门文章

  1. 天梯赛2016-L2
  2. 机器学习实战(python)-Ch02KNN-Notes
  3. 一头扎进Node系列 - 目录
  4. Print! Print! Print!
  5. codeigniter钩子的使用
  6. 使用Vitamio打造自己的Android万能播放器(7)——在线播放(下载视频)
  7. SendMessage函数的常用消息及其应用大全
  8. flash在影片剪辑里面跳转场景
  9. TSQL与PL/SQL的比较
  10. DotText源码阅读(7) --Pingback/TrackBack