第一个Django应用程序_part1

一、查看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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/266876.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML 文档流和文本流的理解

文本流,概括地说其实就是一系列字符,是文档的读取和输出顺序,也就是我们通常看到的由左到右、由上而下的读取和输出形式,在网页中每个元素都是按照这个顺序进行排序和显示的,而position属性可以将元素从文本流脱离出来…

CCNA实验(一)

无线局域网(WLAN)回顾 使用无线射频信号、载波监听多路访问/冲突避免、半双工。 无线AP相当于以太网的HUB。 有些频段是受限的。 无线信号遇到的问题: l 反射 l 散射 l 信号吸收(比如说穿墙) 无线标准 l ITU-R l …

linux中postfix(基于源码)的邮件系统

一、安装前的准备工作: 首先配置yum服务器,安装dns 1、安装所需的rpm包,这包括以下这些: httpd, php, php-mysql, mysql, mysql-server, mysql-devel, openssl-devel, dovecot, perl-DBD-MySQL, tcl, tcl-devel, libart_lgpl, li…

UE4 集成讯飞听写插件

搞了几天,有些坑记录一下。 3个方面的知识需要学习 1、制作UE4插件 2、引入第三方库 3、讯飞听写的api 一看是参考 https://blog.csdn.net/u012793104/article/details/78067937 http://doc.xfyun.cn/msc_windows/%E8%AF%AD%E9%9F%B3%E5%90%AC%E5%86%99.html API&am…

c51单片机有几个终端语言,吃过大亏,才知道要从51单片机入手

原标题:吃过大亏,才知道要从51单片机入手在这里,我就不说什么是单片机了,而是说说怎样学单片机,就我个人而言先学51,因为这个单片机在中国市场上发展了几十年了,现在工程中用的比较多的也是MCS-51, 它的资料…

医疗项目中对网编的一些理解看法

医疗项目中对网编的一些理解看法。做网络营销都有一个前提,那就是以用户为中心,站在用户的角度考 虑问题。在网络营销中,网编如何提升充实自己?怎么获得信息渠道?见多:多看,多了解行业的变化&am…

android 自定义view画表格,Android自定义View实现课程表表格

自己闲下来时间写的一个课表控件,使用的自定义LinearLayout,里面View都是用代码实现的,最终效果如下图,写的可能有问题希望多多指点创建一个自定义LinearLayout 控件用来装载课程的信息和课程的周数,和节数大概的布局三…

26.中继器数据的添加与删除

选择中继器里面的数据集再选择增加行 勾上之后选择下方的增加行就可以填入数据了 用变量获取用户输入的各项内容 但是图片不能用公式操作 方法:通过右键单击图片获得图片的地址 图片中蓝色的部分就是相对路径 把这个路径放到中继器的数据里就可以用了 以上是添加&am…

android工作机制和内核,android内核剖析学习笔记:AMS(ActivityManagerService)内部原理和工作机制...

一、ActivityManagerService提供的主要功能:(1)统一调度各应用程序的Activity(2)内存管理(3)进程管理二、启动一个Activity的方式有以下几种:(1)在应用程序中调用startActivity启动指定的Activity(2)在Home程序中单击一个应用图标,启动新的Ac…

从.Net到Java学习第四篇——spring boot+redis

从.Net到Java学习系列目录 “学习java已经十天,有时也怀念当初.net的经典,让这语言将你我相连,怀念你......”接上一篇,本篇使用到的框架redis、FastJSON。 环境准备 安装redis,下图是我本机的redis绿色版,…

hdu 4409 Family Name List LCA +stl

http://acm.hdu.edu.cn/showproblem.php?pid4409 赛后才过只能说悲剧了,知道思路,stl不熟悉,所以导致写的很慢....占据了很多时间,手速代码准确度。。哎。。。 题意: 给你一个家谱,n个人的姓名&#xff0c…

mysql杂记

1、 mysql安装完成后需要将mysql里面的bin目录加到环境变量里之后,才能在cmd窗口里使用mysql命令 2、 在CMD命令窗口敲入命令 mysql -hlocalhost -uroot -ppassword进入mysql数据库 这里我的用户名是root,密码是123456 转载于:https://www.cnblogs.com/y…

vue created 生命周期

在实例创建完成后被立即调用。在这一步,实例已完成以下的配置:数据观测 (data observer),属性和方法的运算,watch/event 事件回调。然而,挂载阶段还没开始,$el属性目前不可见。 methods、data、watch等可以…

android cne服务,Android内存优化-了解内存篇

查看系统内存文件shellaries:/ $ cat /proc/meminfoMemTotal: 1970216 kBMemFree: 83756 kBBuffers: 156020 kBCached: 702516 kBSwapCached: 0 kBActive: 1160284 kBInactive: 397932 kBActive(anon): 778932 kBInactive(anon): 2228 kBActive(file): 381352 kBInactive(file)…

Shell中的特殊字符

通配符 当需要用命令处理一组文件,例如file1.txt、file2.txt、file3.txt……,用 户不必一一输入文件名,可以使用Shell通配符。Shell命令的通配符含义如下表 引号 在 Shell 中引号分为 2 种:单引号、双引号。 ( 1 &…

android的帧布局,七、Android帧布局FrameLayout和霓虹灯效果

帧布局容器为每个加入其中的组件创建一个空白的区域(称为一帧),所有每个子组件占据一帧,这些帧都会根据gravity属性执行自动对齐。FrameLayout的常用XML属性和相关方法XML属性相关方法说  明android:foregroundsetForeground(Drawable)设置该帧布局容器…

flutter能开发游戏吗_Steam上架游戏开发软件,不用代码也能制作游戏,而且还是免费的...

时代在变化,科技在进步,曾几何时我们一度以为的高科技,在现在看来也不过是平常到不能再平常的东西。游戏开发也一样,以前需要代码才能开发制作而成,现如今都不需要了,直接编辑就OK,Steam商城这次…

快速构建Windows 8风格应用10-设备方向

本篇博文主要介绍常用支持Windows 8操作系统设备的方向、如何获取当前设备方向、DisplayProperties类 常用支持Windows 8操作系统设备的方向在我们常用的设备当中,Windows 8是通过什么来监控设备方向呢?答案是方向传感器,那么对于设备的不同方…

CSDN怎么转载别人的博客

参考:CSDN怎么转载别人的博客 作者:zhongjianblackberry 发布时间:2018-03-06 11:57:59 网址:https://blog.csdn.net/zhongjianblackberry/article/details/79456338 目录转载CSDN博客步骤:Markdown和HTML相关小知识Ma…

青岛西海岸惠普大数据_青岛西海岸新区用好卫星大数据 为城市治理全面赋能...

来源:环球网为推进城市治理数字化程度,提升城市治理的智能化和精细化水平,青岛西海岸新区搭建了人工智能搜索视觉分析平台,以月度更新的频率,汇聚了新区0.5米高分辨率卫星影像数据,通过数据资源共享系统为各…