>>1.django中启动服务的时候可以指定IP和Port
>>2.django中网站英文改中文
(
修改settings.py文件,改成下面这样:
LANGUAGE_CODE = 'zh-cn'
)
django自带的后台管理程序代码都在安装django的目录下面:
C:\Python26\Lib\site-packages\django\
命令行退出python的三种方法:
Ctrl+Z,然后按Enter
执行quit()
执行exit()
django中urls.py会用到正则表达式,正则表达式中代表开始和结束的字符分别为:^和$
>>3.每个django项目都自带一个小型的服务器,注意是每个项目都有,意思就是有多少个django项目,就有多少个server
>>4.这是django默认的数据库,可以正确连接上:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'D:\\workspace_myeclipse\\djangopro\\sqlite3.db', # Or path to database file if using sqlite3.
'USER': '', # Not used with sqlite3.
'PASSWORD': '', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '', # Set to empty string for default. Not used with sqlite3.
}
}
sqlit3数据库实际上是一个存储文件,对应的数据库名称必须是一个绝对路径+文件名.db
>>4.
我们来看 article 这个 app 的 models.py 文件:
自己做的示例中,当配置了app后,访问首页时,经常就访问不到页面了,如下所示:
本以为要改变这个首页访问的页面好麻烦了,后来学习了URLConf 相关知识后知道并不是怎么难的。
修改 settings.py 文件,加下面这个url:
urlpatterns = patterns('',
…………….
(r'^', include('article.urls')),
)
再来看下 app article 下的 urls.py 文件配置:
urlpatterns = patterns('',
(r'^$', 'article.views.index'),
……
)
一个空的url 会指向 article.views.index , 当我们再访问:http://localhost:8000/ 页面时,出现的界面如下所示:
**********************************************
URL 匹配方式(相关说明)?
1. 自动匹配
适用于参数比较少的情况下。看如下这个url配置:
(r'^edit/(\d+)/$', 'article.views.edit'),
url 中 括号是有用的,看 django 官方文档 URL dispatcher 这章说明:
To capture a value from the URL, just put parenthesis around it.
大致的意思是说:为了从URL中捕获值的话,使用圆括号将它包括起来。
对应的 views.py 下的 edit 函数如下所示:
@login_required
def edit(request, id):
item = Item.objects.get(id=id)
lists = List.objects.all()
if request.method == "POST":
title = request.REQUEST['title']
item.title=title
try:
list_id = request.POST['list_id']
list = List.objects.get(id=list_id)
except:
list = None
item.article_list = list
item.save()
return HttpResponseRedirect('/item/')
return render_to_response('item/edit.html' , {'item':item,'lists':lists})
当你使用类似以下url http://localhost:8000/item/edit/1/ 时,会自动将 1 的值赋给 edit 函数中的第二个参数 id 。例如我直接在浏览器地址栏中输入:http://localhost:8000/item/edit/1/ ,界面如下所示:
看到红色字体的文字了吗?这也是我想特别说明的一点:你可以重新排序 view’s 中 function 参数的位置。。
装饰器的使用?
在上面edit 函数上面有一句话: @login_required
这个是装饰器,装饰器是一个方法而不是类,login_required 是一个系统内置的装饰器,表示需要用户验证,当用户访问这个页面(edit),但还没有登录时,系统则会要求用户登录。
通过URL ? & 来传参数?
全汉桥他们建议不使用 ? &这种方式来传递参数,说是搜索引擎对这个支持不是很好。但有时,又必须使用这种方式来传递参数。常见的情况在查询的时候,可能传递的参数比较多,这时可能就会选择使用URL来传递参数。
需要说明的是:? 这种传递参数的形式,? 是不用(不参与)在url中匹配的。
views 的 使用 request.GET[‘param’]的方式来获取
def find(request):
key = {}
if request.GET.has_key('title'):
title = request.GET['title']
items = Item.objects.filter(title__startswith=title)
key['title'] = title
return render_to_response('item/list.html' , {'items':items,'key':key})
return HttpResponseRedirect('/item/')
另外,如果您不知道 用户是使用的 post 提交,还是 get 提交可以使用 request.REQUEST[‘paramName’] 方法来获取值。
title = request.REQUEST['title']
模板继承?
模板继承是Django开发中非常有用的一种解决方案。为重用带来了很大的方便。
了解{{ block.super }} 的使用
注释?
1. 单行注释
{# Template inheritance Demo #}
2. 多行注释
{% comment %} Ignore everything {% endcomment %}
URL配置的两种写法
在view中直接写SQL语句/
from django.shortcuts import render_to_response
import MySQLdb
def book_list(request):
db = MySQLdb.connect(user='me', db='mydb', passwd='secret', host='localhost')
cursor = db.cursor()
cursor.execute('SELECT name FROM books ORDER BY name')
names = [row[0] for row in cursor.fetchall()]
db.close()
return render_to_response('book_list.html', {'names': names})
验证编写的 model 是否有错
Any time you think you have problems with your models, run python manage.py validate. It tends to catch all the common model problems.