Django 创建一个应用程序
1. 认识Django
- Django是一个高级的Python Web框架,它鼓励快速开发和清洁,务实的设计。
- 由经验丰富的开发人员构建,它负责Web开发的许多麻烦,因此您可以专注于编写应用程序,而无需重新创建轮子。
- 它是免费的和开源的。
- 被官方称之为完美主义者的Web框架。
Django可以更快地构建更好的Web应用程序并减少代码。
2. Django框架的特点:
快速开发:Django的宗旨在于帮助开发人员快速从概念到完成应用程序。
安全可靠:Django认真对待安全性,帮助开发人员避免许多常见的安全错误。
超可伸缩性: Web上的一些最繁忙的网站利用了Django快速灵活扩展的能力
3.安装
作为Python Web框架,Django需要Python,在安装Python同时需要安装pip。
在线安装Django
pip3 install Django
检测当前是否安装Django及版本
python3 -m django --version
1.11.7
4.创建项目
在你即将书写项目的目录中输入一下命令来创建一个项目,最好是一个全新的空目录
django-admin startproject mysite
5.运行开发服务器
$cd 进入mysite目录$python3 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.(注意:现在忽略关于未执行应用数据库迁移的警告) August 07, 2017 - 15:50:53
Django version 1.11, 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),直到您准备好生产。
- 默认情况下,该runserver命令在端口8000的内部IP上启动开发服务器。当然也可以指定端口开启服务,如8080端口:
$ python3 manage.py runserver 8080
如果要更改服务器的IP,请将其与端口一起传递。例如:
$ python manage.py runserver 192.168.194.132:8000
注意:通过IP访问后报如下错误:
DisallowedHost at /polls
Invalid HTTP_HOST header: '192.168.*.*:8000'. You may need to add '192.168.*.*' to ALLOWED_HOSTS.
HTTP_HOST标头无效:'192.168.*.*:8000'。您可能需要将“192.168.*.*”添加到ALLOWED_HOSTS
解决:
进入 mysite/settings.py文件
ALLOWED_HOSTS = ['192.168.194.132']
6.创建一个应用程序
- 要创建您的应用程序,请确保您与目录位于同一目录,manage.py 并键入以下命令:
mysite$ python3 manage.py startapp polls
这将创建一个目录polls,其目录如下:此目录结构将容纳轮询应用程序。
[root@localhost demo]# tree mysite/
mysite/
├── manage.py
├── mysite
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── polls
├── admin.py
├── apps.py
├── __init__.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
└── views.py
定义我们的第一个视图
我们来写第一个视图。打开文件polls/views.py 并放入以下Python代码:
from django.http import HttpResponse def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
- 这是Django中最简单的视图。要调用视图,我们需要将其映射到一个URL - 为此,我们需要一个URLconf。
要在polls目录中创建一个URLconf,创建一个名为urls.py。您的应用目录应该如下所示:
└── polls
├── admin.py
├── apps.py
├── __init__.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
├── urls.py
└── views.py
在polls/urls.py文件中包含以下代码:
from django.conf.urls import url from . import views urlpatterns = [
url(r'^$', views.index, name='index'),
]
- 下一步是将根URLconf指向polls.urls模块。 在 mysite/urls.py添加一条import用于django.conf.urls.include和插入include()的urlpatterns列表,所以你必须:
from django.conf.urls import include, url
from django.contrib import admin urlpatterns = [
# url(r'^admin/', admin.site.urls),
url(r'^polls/', include('polls.urls')),
]
- 其中include()函数允许引用其他URLconfs。请注意,该include()函数的正则表达式 没有$(字符串匹配字符),而是尾部的斜杠。 每当Django遇到时 include(),它会排除与该点匹配的任何部分,并将剩余的字符串发送到随附的URLconf进行进一步处理。
- 背后的想法include()是使即插即用的URL变得容易。由于民意调查是在自己的URLconf(polls/urls.py)中,它们可以被 放置在“/ polls /”下面,或者在“/ fun_polls /”下面,或者在“/ content / polls /”或其他路径根目录下,工作。
- 注:include()当您包含其他网址格式时,您应始终使用。 admin.site.urls是唯一的例外。
- 您现在已将index视图连接到URLconf中。让它验证它的工作,运行以下命令:
$ python3 manage.py runserver 0:8000
- 在浏览器中转到http:// localhost:8000 / polls /,您应该看到文本"Hello, world. You're at the polls index."
7.设置Django 模板
- 在manage.py文件的同级目录中创建一个文件夹 templates
mysite$ mkdir templates
- 在templates目录下创建一个hello.html文件
<html>
<head>
<meta charset="utf-8">
<title>测试模板</title>
</head>
<body>
<h1>hello world</h1>
</body>
</html>
- 接下来我们需要向Django说明模板文件的路径,修改settings.py,
修改 TEMPLATES 中的 DIRS 为[BASE_DIR+"/templates",]
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR,"templates")],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
给当前的模板设置一个url路由,并配置视图
- polls/urls.py路由
from django.conf.urls import url from . import views urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^tmp/', views.tmp, name='tmp'),
]
- polls/views.py 视图
# 注意:需导入from django.shortcuts import render
from django.shortcuts import render
from django.http import HttpResponse def index(request):
return HttpResponse("Hello, world.") def tmp(request):
return render(request,"hello.html")
访问流程
1,在浏览器输入http://localhost:8000/polls/tmp/
2,我们的请求会被主路由 捕获 并发送给 子路由 url(r'^polls/', include('polls.urls')),
3,在子路由中会被会被引导进入 views文件中的tmp方法中
4.,在views视图的tmp方法中会去加载templates文件夹下的hello.html并返回给访问者
Django 创建一个应用程序的更多相关文章
- 用django创建一个简单的sns
用django创建一个简单的sns 1.首先创建一个工程newsns django-admin.py startproject newsns 在工程目录下新建一个文件夹templates,在该文件夹下 ...
- SpringMVC基础入门,创建一个HelloWorld程序
ref:http://www.admin10000.com/document/6436.html 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要 ...
- (4opencv)如何基于GOCW,创建一个实时视频程序
直接使用提供的代码框架进行修改,是最快得到效果的方法:但是这样的灵活性较差,而且真正的程序员从来都不会停滞在这一步:我们需要的是"将框架解析到最小化.理清楚每个构建之间的关系",只 ...
- Win32 程序开发:创建一个应用程序窗口
一.创建一个应用程序窗口 代码如下: // 头文件 #include <windows.h> // 全局变量 WCHAR g_lpszClassName[] = L"CLASSN ...
- 利用django创建一个投票网站(六)
建你的第一个 Django 项目, 第六部分 这一篇从第五部分(zh)结尾的地方继续讲起.再上一节中我们为网络投票程序编写了测试,而现在我们要为它加上样式和图片. 除了服务端生成的 HTML 以外,网 ...
- 利用django创建一个投票网站(五)
创建你的第一个 Django 项目, 第五部分 这一篇从第四部分(en)结尾的地方继续讲起.我们在前几章成功的构建了一个在线投票应用,在这一部分里我们将其创建一些自动化测试. 自动化测试简介 自动化测 ...
- 利用django创建一个投票网站(一)
这是教程的原始链接:http://django-intro-zh.readthedocs.io/zh_CN/latest/part1/ 创建你的第一个 Django 项目, 第一部分 来跟着实际项目学 ...
- Django创建一个简单的blog
1. 使用django-admin.py 创建mysite项目 sunny@sunny-ThinkPad-T450:~/PycharmProjects$ django-admin.py startpr ...
- 用html5的canvas和JavaScript创建一个绘图程序
本文将引导你使用canvas和JavaScript创建一个简单的绘图程序. 创建canvas元素 首先准备容器Canvas元素,接下来所有的事情都会在JavaScript里面. <canvas ...
随机推荐
- jenkin、SVN、archery集成openLDAP
jenkins: 1.下载.安装插件 LDAP .Matrix Authorization Strategy 2. 系统管理 —> 全局安全配置 点击 启用安全,并且选择 LDAP 认证,这里有 ...
- WebSphere Application Server中manageprofiles的使用
转自 https://www.cnblogs.com/lgfeng/archive/2013/02/21/2921215.html ---------------------------------- ...
- 侯捷STL课程及源码剖析学习2: allocator
以STL 的运用角度而言,空间配置器是最不需要介绍的东西,它总是隐藏在一切组件(更具体地说是指容器,container)的背后,默默工作默默付出. 一.分配器测试 测试代码 #include < ...
- 筛素数 poj 2739
题目链接:https://vjudge.net/problem/POJ-2739 输入一个数字n,判断有没有一段连续的素数之和大于n,如果有,计算总共有几种. 思路:用素数筛法求出10000以内的素数 ...
- 151. Reverse Words in a String (String)
思路: 本题考查的目的并不是使用字符串的函数.方法是两次reverse,先对每个单词先做一次翻转,然后对整个字符串做一次翻转. 需要注意的是去除extra space,并且对全space字符串.以及最 ...
- 【c++】c++ 11之lamba表达式
C++ lambda表达式与函数对象 lambda表达式是C++11中引入的一项新技术,利用lambda表达式可以编写内嵌的匿名函数,用以替换独立函数或者函数对象,并且使代码更可读.但是从本质上来讲, ...
- SSM提交了事物但数据库不执行
从图中可以看到,spring已经给出事物提交成功,但数据库并未插入数据,找了老半天发现,数据库表上我加了个触发器,触发器执行失败造成没有数据库commit.但程序没什么不报异常吗?
- equals与“==”的区别
对于值类型,“==”比较的是不是同一数值,equals先比较是不是同一类型,在比较是不是同一数值: 对于引用类型,“==”和equals比较的都是是否引用了同一实例对象
- c#引用命名空间的作用
System 包含用于定义常用值和引用数据类型.事件和事件处理程序.接口.属性和处理异常的基础类和基类.其他类提供支持下列操作的服务:数据类型转换,方法参数操作,数学计算,远程和本地程序调用,应用程序 ...
- 本地推送UILocalNotification的一些简单方法
1.添加本地推送,需要在app添加推送.可以根据通知的userInfo的不同的键值对来区分不同的通知 UILocalNotification *notification = [[UILocalNoti ...