`
avaj
  • 浏览: 237621 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Djangobook笔记

阅读更多
阅读hideto翻译的Django book做的记录

第一个视图文件:
/**
这个文件应该放在哪里呢?答案是放在任何一个位置都可,只要它是在你的Python PATH下
Python PATH是一个你系统的目录列表,当你使用Python import语句时Python会查看这些目录
例如你的Python PATH设置成['', '/usr/lib/python2.4/site-packages', '/home/mycode']
如果你执行代码from foo import bar,Python将首先在当前目录下查找叫foo.py的模块
第一个Python PATH为空string,这表示当前目录
如果找不到foo.py,Python将尝试查找/usr/lib/python2.4/site-packages/foo.py
最后,如果foo.py还是找不到,Python将报ImportError 
如果你有兴趣查看Python PATH,进入Python交互环境并输入import sys和print sys.path 
一般情况下Django都会为我们设置好python path
*/
 
//首先从django.http模块import HttpResponse类
from django.http import HttpResponse
//从python标准库import datetime模块
import datetime

/** 
定义视图方法:视图的名称是可以随便定义的
每个视图方法都使用HttpRequest对象作为自己的第一个参数
这个视图方法返回了一个包含当前日期和时间的HTML页面
*/
def current_datetime(request):
	//计算当前日期,并存储在变量now中
	now = datetime.datetime.now()
	//使用Python的格式化string能力构建了一个HTML应答 
	//string里面的%s是一个占位符,string后面的百分号表示使用now变量的值代替%s 
	html = "It is now %s."%now
	//视图返回一个包含生成的HTML的HttpResponse对象 
	//每个视图方法都会返回一个HttpResponse对象
	return HttpResponse(html)



url conf
/**
视图是如何被django找到,并工作的呢?关键就是url conf,这个文件就是django的url conf配置文件
这个配置是一个URL模式和对应的view函数的映射,这些函数会在请求某个符合特定模式的URL时被调用。 
URLconf就是告诉Django,"对于这个URL,调用这些代码,对于那个URL,调用那些代码..." 
import django.conf.urls.defaults模块的所有对象,包括一个叫patterns的方法 
*/

from django.conf.urls.defaults import *

//必须引入current_datetime模块(模块名称与方法名称相同)
from mysite.views import current_datetime

# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()

//调用patterns方法,patterns方法只有一个空string参数,其余的都被注释掉了,
//这意味着你的Django项目是空的,这让Django得知显示“It worked!”页面 
urlpatterns = patterns('',
    # Example:
    # (r'^mysite/', include('mysite.foo.urls')),

    # Uncomment the next line to enable admin documentation:
    # (r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line for to enable the admin:
    # (r'^admin/(.*)', admin.site.root),
	//定义一个映射,可以使用正则表达式定义url
	//http://localhost:8000/now 即可看到效果
	(r'^now/$', current_datetime),
)



django是如何通过实现url conf的呢?

1、当django服务启动的时候会加载mysite/settings.py文件,此文件中有关于django的配置
其中有一个配置叫ROOT_URLCONF,它告诉Django使用哪个Python模块作为当前站点的URL配置

2、当一个请求进来如/now/,Django载入URL配置,然后按顺序检查每个URL模式直到找到一个匹配的URL请求模式
然后Django调用那个模式匹配的方法,并传递一个HttpRequest对象作为第一个参数。一定是第一个参数。

3、视图方法负责返回一个HttpResponse对象



优雅的url:

可以使用正则表达式定义url。
url中传递参数就是用()表示,django会将()的变量作为参数传递给这个url对应的方法
如:
url:(r'^now/(plus|minus)([2-9]|\d\d)hours/$', hour_offset), 
函数:def hour_offset(request, plus_or_minus, offset): 


第一个括号对应参数plus_or_minus,第二个括号对应参数offset

另外还遇到一个问题:
当在.py文件中写中文注释的时候,页面访问会报错!难道不支持中文注释吗?
Traceback (most recent call last):

  File "D:\Python2.5.1\Lib\site-packages\django\core\servers\basehttp.py", line 277, in run
    self.result = application(self.environ, self.start_response)

  File "D:\Python2.5.1\Lib\site-packages\django\core\servers\basehttp.py", line 634, in __call__
    return self.application(environ, start_response)

  File "D:\Python2.5.1\Lib\site-packages\django\core\handlers\wsgi.py", line 217, in __call__
    response = self.get_response(request)

  File "D:\Python2.5.1\Lib\site-packages\django\core\handlers\base.py", line 68, in get_response
    response = middleware_method(request)

  File "D:\Python2.5.1\Lib\site-packages\django\middleware\common.py", line 57, in process_request
    urlresolvers.resolve(request.path)

  File "D:\Python2.5.1\Lib\site-packages\django\core\urlresolvers.py", line 299, in resolve
    return get_resolver(urlconf).resolve(path)

  File "D:\Python2.5.1\Lib\site-packages\django\core\urlresolvers.py", line 238, in resolve
    for pattern in self.urlconf_module.urlpatterns:

  File "D:\Python2.5.1\Lib\site-packages\django\core\urlresolvers.py", line 262, in _get_urlconf_module
    raise ImproperlyConfigured, "Error while importing URLconf %r: %s" % (self.urlconf_name, e)

ImproperlyConfigured: Error while importing URLconf 'mysite.urls': Non-ASCII character '\xb5' in file D:\temp\mysite\..\mysite\urls.py on line 8, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details (urls.py, line 8)


---
只要将.py保存为utf-8格式就不会有以上错误了
分享到:
评论

相关推荐

    Django book出错笔记

    Django book出错笔记 DjangoBook 书虽然经典 但是版本有些来 有些语法已经发生变化,该笔记在阅读过程中 对已经更新的地方做出相应修改

    django笔记

    在看django book 2.0和django官方文档的过程中自己做的django笔记,

    Django入门笔记.doc

    Django入门笔记主要涵盖以下几个关键知识点: 1. **创建项目**:Django是Python的一款Web框架,用于快速开发高效、可维护的网站。创建项目是使用Django的第一步,通过命令行工具`django-admin startproject project...

    django模型专题笔记

    **Django 模型专题笔记** 在 Django 中,模型(Model)是数据库的抽象层,它是数据结构的主要定义部分,负责描述应用中的数据以及数据的行为。本笔记将深入探讨 Django 模型的各个方面,帮助你更好地理解和运用这一...

    Django架构操作笔记

    ### Django 架构操作知识点详解 #### 一、Django 的安装与启动 **知识点1:** 使用 pip 安装 Django。 - **命令行示例:** ```bash pip install django==2.2.* ``` - **解释说明:** 通过 pip 巢工具来安装...

    django教程:基本操作笔记整理.rar

    **Django教程:基本操作笔记整理** Django是一款高级的Python Web框架,它鼓励快速开发和清洁、实用的设计。这个教程将带你深入了解Django的基本操作,包括安装、项目创建、应用构建、数据库交互以及视图和模板的...

    基于Springboot+vue的读书笔记代码

    Python的Flask或Django框架常被用于快速构建API。这部分代码可能涉及数据抓取、分析或其他与阅读笔记相关的业务逻辑。 Neo4j是一个图形数据库,可能被用于存储和查询书籍、笔记之间的关系。在读书笔记应用中,这种...

    django-prepared-query:SQL对Django ORM的预准备语句支持

    DJANGO专用查询安装您可以使用pip安装django-prepared-query : $ pip install django-prepared-query例子from django_prepared_query import PreparedManager , BindParamclass Book ( models . Model ): objects =...

    qgen-backend

    预览 :rocket: 特征添加/编辑注释 :closed_book: 根据您的笔记生成测验MCQs :memo: 真假 :check_mark: :cross_mark_button: 填空 :red_question_mark: 概括 :black_nib: 抽认卡 :bookmark: 图片中的问题 :mountain_...

    qgen-frontend

    演示版 :rocket: 特征添加/编辑注释 :closed_book: 根据您的笔记生成测验MCQs :memo: 真假 :check_mark: :cross_mark_button: 填空 :red_question_mark: 概括 :black_nib: 抽认卡 :bookmark: 图片中的问题 :mountain...

Global site tag (gtag.js) - Google Analytics