django中url,静态文件,POST请求的配置 分类: Python 2015-06-01 17:00 789人阅读 评论(0) 收藏
平时使用的是pycharm,所以这篇文章主要也是使用pycharm默认创建的django项目为基础进行讲解。项目目录如下图:
1.URL的配置
当创建好项目后,运行项目就可以看到django默认的页面。那么怎么访问自己创建的页面呢?
因为django是类MVC的开发模式。这里面就涉及到配置URL的问题。创建一个自己的APP
(也可以称为一个模块),包含的文件内容如下图:
然后需要在setting.py
的文件INSTALLED_APPS
中注册新创建的App
:
新创建项目的默认url配置如下:
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'django_static_file_config.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
url(r'^admin/$', include(admin.site.urls)),
)
那么怎么把新创建的App
的urls.py
和项目默认的urls.py
关联起来呢?需要做如下的配置:
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'django_static_file_config.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
url(r'^admin/$', include(admin.site.urls)),
#通过include()函数包含新APP种的url
url(r'^load/', include('index.urls')),
)
新创建APP中的urls.py
的配置如下:
#!usr/bin/env python
# coding: utf-8
from django.conf.urls import patterns
from django.conf.urls import url
urlpatterns = patterns('',
url(r'^load_index/$', 'index.view.load_index', name='load_index'),
)
那么访问的url是:
上面两个配置文件的意义是:
当django接收到请求的时候,会按照url中的层级中第一层(例子中的时
/load/
)去扫描默认的配置文件,即下面的这条语句:
url(r'^load/', include('index.urls')),
如果能够扫瞄到就接着按照第二层load_index
去扫描include导入的url,也就是项目中新创建APP的urls.py
中url是否有匹配项。
2.静态文件的配置
之前在学习django的时候,在静态文件的配置上花费了很多时间,而且没有解决问题,网上也是一搜一大堆的各种解决办法,但是仍然不适用自己的项目。因为不同版本的django都会有些变化,所以强烈建议根据自己的当前版本,选择阅读官方文档:
首先看django的官方文档(我使用的版本是django1.6版本):
当创建一个django的项目的时候在项目的根目录都会生成一个默认的配置文件setting.py
:
关于静态文件的默认配置如下代码:
# Static files (CSS, JavaScript, Images)
# 这里已经为我们生成了官方文档的地址
# https://docs.djangoproject.com/en/1.6/howto/static-files/
STATIC_URL = '/static/'
TEMPLATE_DIRS = (
os.path.join(BASE_DIR, 'templates'),
)
阅读过官方文档以后(强烈建议),我们只需要在setting.py
中添加如下的代码指定静态文件的目录即可:
# -----config static file
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
)
当我浏览网页的时候,可以发现能够正确的找到静态文件。如下图:
3.POST请求的配置
在看post
请求之前,先看一下get
请求的方式,前端jQuery的代码如下:
$(function () {
$('.test-post').on('click', function () {
var url = '/load/getmethod/'
$.ajax({
type: 'GET',
data:{
test:'test'
},
url: url,
success: testSuccess,
dataType: 'html',
async: false
});
});
})
var testSuccess =function (){
};
后端python处理的方式:
def getmethod(request):
test = request.GET.get('test','')
return HttpResponse(test)
能够正常接收到get
方式传递的参数:
看下结果,如下图:
那么使用POST
的方式会怎么样呢?
只需要修改jQuery代码中的参数即可,先修改url为:
var url = '/load/postmethod/'
然后修改:
type: 'POST',
当再次尝试往后端传递参数的时候,结果如下图:
发生了403
的错误,请求被拒绝了。这是因为django默认的配置MIDDLEWARE_CLASSES
中一个中间件CSRF
(跨站请求伪造),维基百科地址(点击这里):
'django.middleware.csrf.CsrfViewMiddleware',
对post
请求做了验证。
第一种解决办法:
我们首先尝试注释掉这一行,验证是否能够正常的发送POST
请求。
可以看到结果是OK
的,如下图:
第二种解决办法:
导入
from django.views.decorators.csrf import csrf_exempt
模块,并且在接受post
的参数的函数前面添加如下的前缀,
@csrf_exempt
def postmethod(request):
test = request.POST.get('test','')
return HttpResponse(test)
经过验证,可以正常的接受post
请求(有一个缺点就是,在项目的所有的POST
请求的处理函数前面都得加这样的标记):
CSRF推荐阅读:
http://www.cnblogs.com/lins05/archive/2012/12/02/2797996.html
版权声明:本文为博主原创文章,未经博主允许不得转载。
django中url,静态文件,POST请求的配置 分类: Python 2015-06-01 17:00 789人阅读 评论(0) 收藏的更多相关文章
- C语言中返回字符串函数的四种实现方法 2015-05-17 15:00 23人阅读 评论(0) 收藏
C语言中返回字符串函数的四种实现方法 分类: UNIX/LINUX C/C++ 2010-12-29 02:54 11954人阅读 评论(1) 收藏 举报 语言func存储 有四种方式: 1.使用堆空 ...
- 【Heritrix基础教程之1】在Eclipse中配置Heritrix 分类: H3_NUTCH 2014-06-01 00:00 1262人阅读 评论(0) 收藏
一.新建项目并将Heritrix源码导入 1.下载heritrix-1.14.4-src.zip和heritrix-1.14.4.zip两个压缩包,并解压,以后分别简称SRC包和ZIP包: 2.在Ec ...
- ubuntu中安装jdk 分类: java 学习笔记 linux ubuntu 2015-07-06 17:49 74人阅读 评论(0) 收藏
参考文献:ubuntu 13.04 安装 JDK 先去oracle官网下载jdk,这一段我就不赘述了. 下载好之后先解压,解压方式参见 linux常用的压缩与解压缩命令 ,解压之后,将文件剪贴至/us ...
- iOS中UITextField 使用全面解析 分类: ios技术 2015-04-10 14:37 153人阅读 评论(0) 收藏
//初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 13 ...
- ASP.NET 自定义URL重写 分类: ASP.NET 2014-10-31 16:05 175人阅读 评论(0) 收藏
一.功能说明: 可以解决类似 http://****/news 情形,Url路径支持正则匹配. 二.操作步骤: 1.增加URL重写模块: using System; using System.IO; ...
- ASP.NET 自定义URL重写 分类: ASP.NET 2014-10-31 16:05 174人阅读 评论(0) 收藏
一.功能说明: 可以解决类似 http://****/news 情形,Url路径支持正则匹配. 二.操作步骤: 1.增加URL重写模块: using System; using System.IO; ...
- Http,Https(SSL)的Url绝对路径,相对路径解决方案Security Switch 4.2的配置和使用 分类: ASP.NET 2014-11-05 12:51 97人阅读 评论(0) 收藏
下载地址1:https://securityswitch.googlecode.com/files/SecuritySwitch%20v4.2.0.0%20-%20Binary.zip 下载地址2:h ...
- ASIHTTPRequest异步请求 分类: ios技术 2015-03-01 09:33 48人阅读 评论(0) 收藏
我们运行程序,如果网速很慢,查询的时候会一直黑屏,直到请求结束画面才出现,这样用户体验很不好.因此同步请求一般只是在某个子线 程中使用,而不在主线程中使用.异步请求的用户体验要比同步请求好,因此一般情 ...
- C#中的线程(上)-入门 分类: C# 线程 2015-03-09 10:56 53人阅读 评论(0) 收藏
1. 概述与概念 C#支持通过多线程并行地执行代码,一个线程有它独立的执行路径,能够与其它的线程同时地运行.一个C#程序开始于一个单线程,这个单线程是被CLR和操作系统(也称为"主线 ...
随机推荐
- textInput事件
DOM3级事件引入了 textInput 这个代替keypress的textInput的行为稍有不同 区别 只要可以获得焦点的元素都有keypress事件,但是textInput事件只有文本编辑区域才 ...
- Effective C++ 随笔(4)
条款21:必须返回对象时,别妄想返回其reference 例子: Raional类可以执行有理数的一些运算,并且使用heap内存申请 并且其operator*函数为 const Rational&am ...
- Python实现文件备份
Python实现文件拷贝 2017年8月27日 1.实现目的 统一时间对服务器某文件夹内文件进行备份保存,如若备份成功则不提示任何错误,否则将以邮件的形式告知管理员,备份出错. 2.程序流程图 主要流 ...
- Java安全技术
分类 Java平台安全,即JRE安全 开发Java程序(普通程序,服务,applet)安全,即提供安全的开发工具和服务. 用法 用签名和安全策略控制远程的资源访问
- (转)WAMP多站点配置
转自:http://wislab.net/archives/43.html Wamp正在被广泛使用,其傻瓜式的安装配置,使得我们可以得心应手地完成以往较为烦琐的服务器环境搭建过程,直接进入到网页程序的 ...
- 谈谈HashMap线程不安全的体现
原文出处: Hosee HashMap的原理以及如何实现,之前在JDK7与JDK8中HashMap的实现中已经说明了. 那么,为什么说HashMap是线程不安全的呢?它在多线程环境下,会发生什么情况呢 ...
- common.php
<?php /** * */ class Common { if(!function_exists('is_php')) { function is_php($version = '5.0.0' ...
- 比较两个Excle表格的修改内容
//输入参数为文件输入流public static Map<String, List<String>> excelColumn2maplist(InputStream is){ ...
- scrapy分布式
开始之前我们得知道scrapy-redis的一些配置:PS 这些配置是写在Scrapy项目的settings.py中的! #启用Redis调度存储请求队列SCHEDULER = "scrap ...
- 在Delphi中处理word文档与数据库的互联 1
在Delphi中处理word文档与数据库的互联 ---- 目前,Delphi被越来越多的人选中作为MIS系统开发中的前台工具.在以Delphi为前台,一些大型数据库为后台的MIS系统中,图形的处理不可 ...