python 网络服务器框架_Django是Python下的一款网络服务器框架

Django是Python下的一款网络服务器框架。Python下有许多款不同的框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。虽然Django之于Python,达不到Rail之于Ruby的一统江湖的地位,但Django无疑也是Python在网络应用方面的一位主将。

向昆汀的致敬,“被解放的姜戈”

Django意外的和昆汀的电影重名。这大大提高了Django的知名度。另外利用电影,宣传了这个奇怪的词的发音。

下面是Django的初体验。

安装Django

启动计算机中的Python,尝试载入Django模块。如果可以成功载入,那么说明Django已经安装好:

importdjangoprint(django.VERSION)

如果Django还没有安装,可以在命令行,尝试使用pip安装:

sudo pip install django

或者使用easy_install:

sudo easy_install django

启动

使用下面的命令创建项目:

django-admin.py startproject mysite

在当前目录下,将生成mysite文件夹。其文件树结构如下:

mysite

├── manage.py

└── mysite

├── __init__.py

├── settings.py

├── urls.py

└── wsgi.py

1 directory, 5 files

进入mysite,启动服务器:

python manage.py runserver 8000

上面的8000为端口号。如果不说明,那么端口号默认为8000。

打开浏览器,访问http://127.0.0.1:8000,可以看到服务器已经在运行:

虽然有一个能跑的服务器,但什么内容都没有。

第一个网页

在http协议中可以看到,网络服务器是“请求-回应”的工作模式。客户向URL发送请求,服务器根据请求,开动后厨,并最终为客人上菜。Django采用的MVC结构,即点单、厨房、储藏室分离。

我们需要一个指挥员,将URL对应分配给某个对象处理,这需要在mysite/mysite下的urls.py设定。Python会根据该程序,将URL请求分给某个厨师。

mysite

├── manage.py

└── mysite

├── __init__.py

├── settings.py

├── urls.py

└── wsgi.py

1 directory, 5 files

将urls.py修改为:

from django.conf.urls import patterns, include, url

from django.contrib import admin

admin.autodiscover()

urlpatterns= patterns('',

# Examples:

# url(r'^$', 'mysite.views.home', name='home'),

# url(r'^blog/', include('blog.urls')),

url(r'^admin/', include(admin.site.urls)),

url(r'^$', 'mysite.views.first_page'),

)

我们添加了最后一行。它将根目录的URL分配给一个对象进行处理,这个对象是mysite.views.first_page。

用以处理HTTP请求的这一对象还不存在,我们在mysite/mysite下创建views.py,并在其中定义first_page函数:

#-*- coding: utf-8 -*-

from django.http importHttpResponsedeffirst_page(request):return HttpResponse("

世界好

")

第一行说明字符编码为utf-8,为下面使用中文做准备。first_page函数的功能,是返回http回复,即这里的

世界好

。first_page有一个参数request,该参数包含有请求的具体信息,比如请求的类型等,这里并没有用到。

页面效果如下:

增加app

一个网站可能有多个功能。我们可以在Django下,以app为单位,模块化的管理,而不是将所有的东西都丢到一个文件夹中。在mysite下,运行manange.py,创建新的app:

$python manage.py startapp west

这个新的app叫做west,用来处理西餐。

我们的根目录下,出现了一个新的叫做west的文件夹。

mysite/

├── manage.py

├── mysite

│   ├── __init__.py

│   ├── __init__.pyc

│   ├── settings.py

│   ├── settings.pyc

│   ├── urls.py

│   ├── views.py

│   └── wsgi.py

└── west

├── admin.py

├── __init__.py

├── models.py

├── tests.py

└── views.py

我们还需要修改项目设置,说明我们要使用west。在mysite/setting.py中,在INSTALLED_APPS中,增加"west":

INSTALLED_APPS =('django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','west',

)

增加APP页面

我们下面为APP增加首页。我们之前是在mysite/urls.py中设置的URL访问对象。依然采用类似的方式设置。

另一方面,为了去耦合,实现模块化,我们应该在west/urls.py中设置URL访问对象。具体如下:

首先,修改mysite/urls.py:

from django.conf.urls importpatterns, include, urlfrom django.contrib importadmin

admin.autodiscover()

urlpatterns= patterns('',#Examples:

#url(r'^$', 'mysite.views.home', name='home'),

#url(r'^blog/', include('blog.urls')),

url(r'^admin/', include(admin.site.urls)),

url(r'^$', 'mysite.views.first_page'),

url(r'^west/', include('west.urls')),

)

注意新增加的最后一行。这里,我们提醒指挥员,对于west/的访问,要参考west/urls.py。

随后,我们创建west/urls.py,添加内容:

from django.conf.urls importpatterns, include, url

urlpatterns= patterns('',

url(r'^$', 'west.views.first_page'),

)

将URL对应west下,views.py中的first_page函数。

最后,在west下,修改views.py为:

#-*- coding: utf-8 -*-

from django.http importHttpResponsedeffirst_page(request):return HttpResponse("

西餐

")

访问http://127.0.0.1:8000/west,产看效果。

总结

可以看到,Django的创建过程非常简单。但这只是初次尝试Django。为了创建一个完整功能的网站,还需要调用Django许多其它的功能。Django的解放,才刚刚开始。

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

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

相关文章

B系列台达服务器解密码步骤,台达HMI解密,DOP-A解密,DOP-B解密,文件密码解密

DOP-AS35THTD解密,DOP-AS38BSTD解密,DOP-AS57BSTD解密,DOP-A57BSTD解密,DOP-A57CSTD解密,DOP-A57GSTD解密,DOP-A80THTD1解密,DOP-A10TCTD解密,DOP-A10THTD1解密,DOP-AE57BSTD解密,DOP-AE57CSTD解密,DOP-AE57GSTD解密, DOP-AE80THTD解密,DOP-AE94BSTD解密,DOP-AE10THTD解密,DOP-…

Android View相关知识点

View 1,View坐标 Left,Right,Top,Bottom,表示view相对于父控件的距离值,是绝对值,绘制完之后就不会再改变的;X,Y表示view左上角相对于父控件的实时坐标值,是会随着移动view而改变的;TranslationX,TranslationY是view左上角相对于父…

5调用外部浏览器打开代码_浏览器事件循环

浏览器运行过程中会同时面对多种任务,用户交互事件(鼠标、键盘)、网络请求、页面渲染等。而这些任务不能是无序的,必须有个先来后到,浏览器内部需要一套预定的逻辑来有序处理这些任务,因此浏览器事件循环诞生了,再次强…

服务器生成文件怎么配置路径,npm run build生成的文件如何部署到服务器上

其实楼上两个人的回答都是对的,只不过侧重点不一样,一楼是大的方面说,配置好服务器就可以了,该怎么运行就怎么运行,只不过没有部署过项目的人可能就不知道怎么回事了;二楼说的应该是配置windos服务器的环境…

JVM上的高并发HTTP客户端

HTTP可能是最流行的应用程序级别协议,并且有许多库在网络I / O之上实现它,这是常规I / O的一种特殊(面向流)情况。 由于所有I / O都有很多共同点1 ,所以让我们开始对其进行一些讨论。 我将集中讨论具有大量并发HTTP请…

linux下解析域名

linux下解析域名<?xml version"1.0" encoding"UTF-8"?> vi /etc/resolv.confnameserver 208.67.222.222 #opendnsnameserver 208.67.220.220sudo vim /etc/network/interfacesnull转载于:https://www.cnblogs.com/iceiceiceice/p/e64ca5a0b5941c7…

tomcat加白名单_超详细的tomcat管理页面各类型配置总结

概述大部分时候&#xff0c;我们的tomcat服务器都不是部署在本机&#xff0c;那么怎么样不通过ftp/sftp方式来将war包部署到tomcat容器呢&#xff1f;tomcat有提供web页面管理应用的功能。tomcat页面管理进入tomcat默认页面时有“server status”、“manager app”、“Host man…

服务器系统报错kernel-power,第十二讲、Linux服务器操作系统1.ppt

第十二讲、Linux服务器操作系统1.ppt4.1引导与关闭系统 4.1.1 GRUB引导器 GRUB简介 1)grub?是一个多重启动管理器。grub是GRand?Unified?Bootloader的缩写&#xff0c;它可以在?多个操作系统共存时选择引导哪个系统&#xff0c;它不仅可以对各种发行版本的Linux进行引导&am…

Java 关键字 transient

Java 关键字 transient转载于:https://www.cnblogs.com/fysola/p/6394626.html

小程序picker标题_微信小程序-自定义picker选择器

avatar为什么要自定义picker原生小程序picker不支持自定义样式&#xff0c;无联动。该自定组件支持自定义数据支持自定义样式支持传入和返回对象或者基本类型支持联动(改变父列&#xff0c;子列根据关联自动变化)使用直接将picker文件夹拖入工程在某page的json文件中配置{"…

win10系统卷影复制服务器,如何使用Windows卷影拷贝服务恢复文件和文件夹

本文介绍了如何使用Windows卷影拷贝服务恢复文件和文件夹&#xff0c;分享给大家&#xff0c;具体如下&#xff1a;什么是卷影拷贝&#xff1f;从Windows XP SP2和Windows Server 2013开始&#xff0c;微软就向Windows操作系统中引入了一项名叫卷影拷贝的服务(Volume Shadow Co…

openshift s2i_对Openshift上的Play Framework 2应用进行故障排除

openshift s2iOpenshift故障排除 使用“ 自己动手”应用程序类型&#xff0c;您实际上可以有很大的自由度来支持几乎可以在Linux机器上构建和运行的任何框架或服务器。 但是您必须做功课&#xff0c;并做一些研究。 因此&#xff0c;在本文中&#xff0c;我将向您展示一些我在使…

Nginx下配置Http Basic Auth

nginx basic auth指令 第一条语句&#xff1a; 语法: auth_basic string | off;默认值: auth_basic off;配置段: http, server, location, limit_except 默认表示不开启认证&#xff0c;后面如果跟上字符&#xff0c;这些字符会在弹窗中显示。 第二条语句&#xff…

aopaspect区别_面试官:什么是AOP?Spring AOP和AspectJ的区别是什么?

面向切面的编程(AOP) 是一种编程范式&#xff0c;旨在通过允许横切关注点的分离&#xff0c;提高模块化。AOP提供切面来将跨越对象关注点模块化。AOP要实现的是在我们写的代码的基础上进行一定的包装&#xff0c;如在方法执行前、或执行后、或是在执行中出现异常后这些地方进行…

服务器多核性能排行,服务器内存多核性能

服务器内存多核性能 内容精选换一换本文介绍了弹性云服务器ECS的功能发布和对应的文档动态&#xff0c;新特性将在各个区域(Region)陆续发布&#xff0c;欢迎体验。关于弹性云服务器(ECS)更多历史版本变更内容&#xff0c;请单击“查看PDF”详细了解。超高I/O型弹性云服务器使用…

从去除毛刺的策略看开运算opening_circle和闭运算closing_circle的异同

例一&#xff1a;毛刺在往外凸的面上 策略1&#xff1a;分割出黑色部分&#xff0c;然后通过开运算去掉毛刺&#xff0c;再通过原黑色部分区域减去开运算之后的区域&#xff0c;得到毛刺部分的区域。 1 read_image (Tu, C:/Users/xiahui/Desktop/tu.jpg) 2 binary_threshold (…

买服务器带操作系统,买服务器带操作系统

买服务器带操作系统 内容精选换一换只有运行中的弹性云服务器才允许用户登录。Linux操作系统用户名“root”。忘记密码&#xff0c;请先通过“重置密码”功能设置登录密码。重置密码&#xff1a;选中待重置密码的云耀云服务器&#xff0c;并选择“操作”列下的“ 重置密码”。重…

自定义sql_【PL/SQL 自定义函数】 常用场景

看完这章后你会学习到以下内容&#xff1a;1.练习场景2.面试场景3.工作应用场景总览思维导图&#xff1a;面试部分&#xff1a;1.创建函数,从emp表中查询指定员工编号的职工的工资CREATE OR REPLACE FUNCTION CHECK_SAL(F_EMPNO IN EMP.EMPNO%TYPE) RETURN NUMBER ISV_SAL VARC…

让一个非窗口组件(non-windowed component)可以接受来自Windows的消息

为什么要这样做&#xff1f;有时候我们需要一个非窗口组件(比如一个非继承自TWinContrl的组件)可以接受Windows消息。要接受消息就需要一个窗口句柄&#xff0c;但是非窗口组件却没有句柄。这篇文章将讲述怎么让一个没有句柄的组件如何通过一个隐藏的窗口接受消息这是怎么做到的…

进阶– Java EE 7前端5强

系列继续。 在初步概述和Arjan关于最重要的后端功能的文章之后 &#xff0c;我现在非常高兴让Ed Burns&#xff08; edburns &#xff09;使用他最喜欢的Java EE 7前端功能完成本系列。 感谢Markus Eisele让我有机会在他非常受欢迎的博客上发表帖子。 我和Markus的关系可以追溯…