平时使用的是pycharm,所以这篇文章主要也是使用pycharm默认创建的django项目为基础进行讲解。项目目录如下图:

1.URL的配置

当创建好项目后,运行项目就可以看到django默认的页面。那么怎么访问自己创建的页面呢?

因为django是类MVC的开发模式。这里面就涉及到配置URL的问题。创建一个自己的APP(也可以称为一个模块),包含的文件内容如下图:

然后需要在setting.py的文件INSTALLED_APPS中注册新创建的App:

新创建项目的默认url配置如下:

  1. from django.conf.urls import patterns, include, url
  2. from django.contrib import admin
  3. admin.autodiscover()
  4. urlpatterns = patterns('',
  5. # Examples:
  6. # url(r'^$', 'django_static_file_config.views.home', name='home'),
  7. # url(r'^blog/', include('blog.urls')),
  8. url(r'^admin/$', include(admin.site.urls)),
  9. )

那么怎么把新创建的Appurls.py和项目默认的urls.py关联起来呢?需要做如下的配置:

  1. from django.conf.urls import patterns, include, url
  2. from django.contrib import admin
  3. admin.autodiscover()
  4. urlpatterns = patterns('',
  5. # Examples:
  6. # url(r'^$', 'django_static_file_config.views.home', name='home'),
  7. # url(r'^blog/', include('blog.urls')),
  8. url(r'^admin/$', include(admin.site.urls)),
  9. #通过include()函数包含新APP种的url
  10. url(r'^load/', include('index.urls')),
  11. )

新创建APP中的urls.py的配置如下:

  1. #!usr/bin/env python
  2. # coding: utf-8
  3. from django.conf.urls import patterns
  4. from django.conf.urls import url
  5. urlpatterns = patterns('',
  6. url(r'^load_index/$', 'index.view.load_index', name='load_index'),
  7. )

那么访问的url是:

http://127.0.0.1:8000/load/load_index/

上面两个配置文件的意义是:

当django接收到请求的时候,会按照url中的层级中第一层(例子中的时/load/)去扫描默认的配置文件,即下面的这条语句:

  1. url(r'^load/', include('index.urls')),

如果能够扫瞄到就接着按照第二层load_index去扫描include导入的url,也就是项目中新创建APP的urls.py中url是否有匹配项。

2.静态文件的配置

之前在学习django的时候,在静态文件的配置上花费了很多时间,而且没有解决问题,网上也是一搜一大堆的各种解决办法,但是仍然不适用自己的项目。因为不同版本的django都会有些变化,所以强烈建议根据自己的当前版本,选择阅读官方文档:

首先看django的官方文档(我使用的版本是django1.6版本):

https://docs.djangoproject.com/en/1.6/howto/static-files/

当创建一个django的项目的时候在项目的根目录都会生成一个默认的配置文件setting.py:

关于静态文件的默认配置如下代码:

  1. # Static files (CSS, JavaScript, Images)
  2. # 这里已经为我们生成了官方文档的地址
  3. # https://docs.djangoproject.com/en/1.6/howto/static-files/
  4. STATIC_URL = '/static/'
  5. TEMPLATE_DIRS = (
  6. os.path.join(BASE_DIR, 'templates'),
  7. )

阅读过官方文档以后(强烈建议),我们只需要在setting.py中添加如下的代码指定静态文件的目录即可:


  1. # -----config static file
  2. STATICFILES_DIRS = (
  3. os.path.join(BASE_DIR, "static"),
  4. )

当我浏览网页的时候,可以发现能够正确的找到静态文件。如下图:

3.POST请求的配置

在看post请求之前,先看一下get请求的方式,前端jQuery的代码如下:

  1. $(function () {
  2. $('.test-post').on('click', function () {
  3. var url = '/load/getmethod/'
  4. $.ajax({
  5. type: 'GET',
  6. data:{
  7. test:'test'
  8. },
  9. url: url,
  10. success: testSuccess,
  11. dataType: 'html',
  12. async: false
  13. });
  14. });
  15. })
  16. var testSuccess =function (){
  17. };

后端python处理的方式:

  1. def getmethod(request):
  2. test = request.GET.get('test','')
  3. return HttpResponse(test)

能够正常接收到get方式传递的参数:

看下结果,如下图:

那么使用POST的方式会怎么样呢?

只需要修改jQuery代码中的参数即可,先修改url为:

  1. var url = '/load/postmethod/'

然后修改:

  1. type: 'POST',

当再次尝试往后端传递参数的时候,结果如下图:

发生了403的错误,请求被拒绝了。这是因为django默认的配置MIDDLEWARE_CLASSES中一个中间件CSRF(跨站请求伪造),维基百科地址(点击这里):

  1. 'django.middleware.csrf.CsrfViewMiddleware',

post请求做了验证。

第一种解决办法:

我们首先尝试注释掉这一行,验证是否能够正常的发送POST请求。

可以看到结果是OK的,如下图:

第二种解决办法:

导入

  1. from django.views.decorators.csrf import csrf_exempt

模块,并且在接受post的参数的函数前面添加如下的前缀,

  1. @csrf_exempt
  2. def postmethod(request):
  3. test = request.POST.get('test','')
  4. 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) 收藏的更多相关文章

  1. C语言中返回字符串函数的四种实现方法 2015-05-17 15:00 23人阅读 评论(0) 收藏

    C语言中返回字符串函数的四种实现方法 分类: UNIX/LINUX C/C++ 2010-12-29 02:54 11954人阅读 评论(1) 收藏 举报 语言func存储 有四种方式: 1.使用堆空 ...

  2. 【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 ...

  3. ubuntu中安装jdk 分类: java 学习笔记 linux ubuntu 2015-07-06 17:49 74人阅读 评论(0) 收藏

    参考文献:ubuntu 13.04 安装 JDK 先去oracle官网下载jdk,这一段我就不赘述了. 下载好之后先解压,解压方式参见 linux常用的压缩与解压缩命令 ,解压之后,将文件剪贴至/us ...

  4. iOS中UITextField 使用全面解析 分类: ios技术 2015-04-10 14:37 153人阅读 评论(0) 收藏

    //初始化textfield并设置位置及大小   UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 13 ...

  5. ASP.NET 自定义URL重写 分类: ASP.NET 2014-10-31 16:05 175人阅读 评论(0) 收藏

    一.功能说明: 可以解决类似 http://****/news 情形,Url路径支持正则匹配. 二.操作步骤: 1.增加URL重写模块: using System; using System.IO; ...

  6. ASP.NET 自定义URL重写 分类: ASP.NET 2014-10-31 16:05 174人阅读 评论(0) 收藏

    一.功能说明: 可以解决类似 http://****/news 情形,Url路径支持正则匹配. 二.操作步骤: 1.增加URL重写模块: using System; using System.IO; ...

  7. 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 ...

  8. ASIHTTPRequest异步请求 分类: ios技术 2015-03-01 09:33 48人阅读 评论(0) 收藏

    我们运行程序,如果网速很慢,查询的时候会一直黑屏,直到请求结束画面才出现,这样用户体验很不好.因此同步请求一般只是在某个子线 程中使用,而不在主线程中使用.异步请求的用户体验要比同步请求好,因此一般情 ...

  9. C#中的线程(上)-入门 分类: C# 线程 2015-03-09 10:56 53人阅读 评论(0) 收藏

    1.     概述与概念 C#支持通过多线程并行地执行代码,一个线程有它独立的执行路径,能够与其它的线程同时地运行.一个C#程序开始于一个单线程,这个单线程是被CLR和操作系统(也称为"主线 ...

随机推荐

  1. hibernate映射组成关系

    目录结构 类 package com.hibernate.helloworld; public class School { private String name; private String a ...

  2. poj 2240 Arbitrage(最短路问题)

    Description Arbitrage is the use of discrepancies in currency exchange rates to transform one unit o ...

  3. 【1】ASP.NET异步(1)

    图标说明了异步的基础认识. 1.如果没有Ajax,提交之后整个页会刷新(左图).右图所示的虚线范围区域加入了ajax技术,提交之后只更新了虚线区域的内容,这样看比较直白. <form>①& ...

  4. 为什么要用GCD-Swift2.x

    为什么要用GCD-Swift2.x 当今世界,多核已然普及.但是APP却不见得很好的跟上了这个趋势.APP 想要利用好多核就必须可以保证任务能有效的分配.并行执行可以让APP同时执行很多 的任务.这个 ...

  5. day33(sql)

    操作数据库 增: create database 数据库名 character set utf8 删 drop database 数据库名称 改 alter database 数据库名称 charac ...

  6. day28(ajax之js原生代码实现)

    ajax ajax:异步页面无刷新技术 AJAX:异步的 JavaScript And XML. * 使用的是老的技术,用的是新的思想. AJAX的功能:完成页面的局部刷新,不中断用户的体验. XML ...

  7. jmeter 4.0版本更新说明(个人做个记录)总版本更新合集

    版本4.0 摘要 新的和值得注意的 不兼容的变化 Bug修复 改进 非功能性变化 已知问题和解决方法 谢谢 新的和值得注意的 核心改进 JMeter现在支持JAVA 9. 提供新的边界提取器元件,提供 ...

  8. 【20171101】the first day in a new company

    英文差的要命还飙英文,擦嘞!!! 就是想记录下 点滴 如下配图: | | | V 手动配图这是图!!!

  9. kafka讲解

    转载http://www.jasongj.com/2015/01/02/Kafka深度解析 Kafka是Apache下的一个子项目,是一个高性能跨语言分布式发布/订阅消息队列系统,而Jafka是在Ka ...

  10. poj 2352 stars 【树状数组】

    题目 题意:按y递增的顺序给出n颗星星的坐标(y相等则x递增),每个星星的等级等于在它左边且在它下边(包括水平和垂直方向)的星星的数量,求出等级为0到n-1的星星分别有多少个. 因为y递增的顺序给出, ...