菜鸟学Django(持续更新)
1.终端进入任何目录,用命令:django-admin.py startproject hello,这样通常的4个文件(__init__.py, manage.py, urls.py, settings.py)就都生成了,如果不这样会有各种各样的诡异问题产生,无解,干脆就这么干吧,Django很讲究规范,那就按规范来做。
2.urls.py里设置好了各项数据,如数据库什么的,还有一项,ROOT_URLCONF,然后manage.py要这样写:
from django.core.management import execute_manager
try:import settings# Assumed to be in the same directory.
except ImportError:import syssys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__)sys.exit(1)if __name__ == "__main__":execute_manager(settings)
当然,各人有异。
3.要运行项目就用命令:python manage.py runserver。。如用到数据库,要生成数据库表就用命令:python manage.py syncdb(首先要创建应用对应的 SQL 语句,使用命令:python manage.py sql polls,polls是应用名,即应用的文件夹名)
4.项目可以包含多个应用,一个应用可存在于多个项目中。应用,可以是 blog 系统,公共记录数据库,或是一个简单的投票系统等等
为了创建名为 polls 的应用,确定在 mysite 的目录中,输入命令:
python manage.py startapp polls
(来自:http://code.google.com/p/docs-django-zh-cn/wiki/IntroTutorial01)
5.
MIDDLEWARE_CLASSES = (#如果没有MIDDLEWARE_CLASSES设置,votes页面会显示Forbidden (403) CSRF verification failed. Request aborted#'django.middleware.csrf.CsrfResponseMiddleware',#如果加上这个,会显示'WSGIRequest' object has no attribute 'user''django.middleware.common.CommonMiddleware',#加上这几行则可以避免上面的错误'django.contrib.sessions.middleware.SessionMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.middleware.csrf.CsrfResponseMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware',
)
6.setting.py里SITE_ID = 1#这里必须设置好,指定了与特定配置文件相关联的Site 对象之数据库ID,在SITE_ID这里有个小问题,(不知道是不是Django的BUG),我下了一个别人的代码,他用的数据库是sqlite,然后我用python manage.py syncdb,进行到设置密码的时候,把终端关了(当时。。我好像是突然想把它的数据库换成mysql。。)再次运行的时候出现错误:Site matching query does not exist。。。google了好久,看到有人说把INSTALLED_APPS里的'django.contrib.sites'给注释掉,我试了果然OK,但是这样岂不是不能在admin显示自己的site了,后来想了很久,突然想到sqlite3新建数据库时是会新建一个sqlite文件的,难道是这个文件在作怪?我找到这个文件,就在项目目录下,移动到回收站,去掉注释,再次运行,一切OK!!世界重归美好!!(好吧,我承认后来还是出问题了,又想了好久,终于,用python manage.py flush命令重新设置用户名之类的东西,终于好了!!)
7.建立project后,settings里的database设置跟1.2和以前的版本是不同的,如果用以前的方法会有警告,不过也可以通过,另外,
'ENGINE': 'django.db.backends.mysql', #注意,前面的django.db.backends.不能丢,否则会说Short names for ENGINE in database configurations are deprecated,用别的数据库也记住不要丢了。
8.研究django-simple-todo(https://github.com/vicalloy/django-simple-todo)时发现不能插入中文的title,又折腾了好久,按这里http://hi.baidu.com/passprot/blog/item/a72ccc3823c896c1d56225fb.html的方法就可以,就是得删除所用的database,然后用create database 数据库名称 DEFAULT CHARSET=UTF8;重建就好了。
9.(来自http://djangobook.py3k.cn/2.0/chapter04/){% block %} 标签告诉模板引擎,子模板可以重载这些部分。 每个{% block %}标签所要做的是告诉模板引擎,该模板下的这一块内容将有可能被子模板覆盖。 {% extends %}标签可以继承父模板,如{%extends "base.html"%}, 模板引擎立即装载其父模板,即本例中的base.html。此时,模板引擎注意
到base.html 中的三个 {% block %} 标签,并用子模板的内容替换这些 block。
10.__unicode__() 方法告诉Python如何将对象以unicode的方式显示出来。可以认为unicode对象就是一个Python字符串,它可以处理上百万不同类别
的字符——从古老版本的Latin字符到非Latin字符,再到曲折的引用和艰涩的符号
11.问题:跑youflog(http://code.google.com/p/youflog/),syncdb时显示:
Traceback (most recent call last):
File "manage.py", line 11, in <module>
execute_manager(settings)
File "/usr/local/lib/python2.7/dist-packages/Django-1.3.1-py2.7.egg/django/core/management/__init__.py", line 438, in execute_manager
utility.execute()
File "/usr/local/lib/python2.7/dist-packages/Django-1.3.1-py2.7.egg/django/core/management/__init__.py", line 379, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python2.7/dist-packages/Django-1.3.1-py2.7.egg/django/core/management/base.py", line 191, in run_from_argv
self.execute(*args, **options.__dict__)
File "/usr/local/lib/python2.7/dist-packages/Django-1.3.1-py2.7.egg/django/core/management/base.py", line 220, in execute
output = self.handle(*args, **options)
File "/usr/local/lib/python2.7/dist-packages/Django-1.3.1-py2.7.egg/django/core/management/base.py", line 351, in handle
return self.handle_noargs(**options)
File "/usr/local/lib/python2.7/dist-packages/Django-1.3.1-py2.7.egg/django/core/management/commands/syncdb.py", line 109, in handle_noargs
emit_post_sync_signal(created_models, verbosity, interactive, db)
File "/usr/local/lib/python2.7/dist-packages/Django-1.3.1-py2.7.egg/django/core/management/sql.py", line 190, in emit_post_sync_signal
interactive=interactive, db=db)
File "/usr/local/lib/python2.7/dist-packages/Django-1.3.1-py2.7.egg/django/dispatch/dispatcher.py", line 172, in send
response = receiver(signal=self, sender=sender, **named)
File "/home/bob/DjangoStudy/projects/youflog/blog/management.py", line 13, in init_data
default_cate.save()
File "/usr/local/lib/python2.7/dist-packages/Django-1.3.1-py2.7.egg/django/db/models/base.py", line 460, in save
self.save_base(using=using, force_insert=force_insert, force_update=force_update)
File "/usr/local/lib/python2.7/dist-packages/Django-1.3.1-py2.7.egg/django/db/models/base.py", line 553, in save_base
result = manager._insert(values, return_id=update_pk, using=using)
File "/usr/local/lib/python2.7/dist-packages/Django-1.3.1-py2.7.egg/django/db/models/manager.py", line 195, in _insert
return insert_query(self.model, values, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/Django-1.3.1-py2.7.egg/django/db/models/query.py", line 1436, in insert_query
return query.get_compiler(using=using).execute_sql(return_id)
File "/usr/local/lib/python2.7/dist-packages/Django-1.3.1-py2.7.egg/django/db/models/sql/compiler.py", line 791, in execute_sql
cursor = super(SQLInsertCompiler, self).execute_sql(None)
File "/usr/local/lib/python2.7/dist-packages/Django-1.3.1-py2.7.egg/django/db/models/sql/compiler.py", line 735, in execute_sql
cursor.execute(sql, params)
File "/usr/local/lib/python2.7/dist-packages/Django-1.3.1-py2.7.egg/django/db/backends/util.py", line 34, in execute
return self.cursor.execute(sql, params)
File "/usr/local/lib/python2.7/dist-packages/Django-1.3.1-py2.7.egg/django/db/backends/mysql/base.py", line 86, in execute
return self.cursor.execute(query, args)
File "/usr/lib/pymodules/python2.7/MySQLdb/cursors.py", line 174, in execute
self.errorhandler(self, exc, value)
File "/usr/lib/pymodules/python2.7/MySQLdb/connections.py", line 36, in defaulterrorhandler
raise errorclass, errorvalue
_mysql_exceptions.OperationalError: (1054, "Unknown column 'slug' in 'field list'")
解决:首先要知道,Django不会去修改已存在的表,它创建还不存在的表!是的,出错点就在这里,我原先已经创建了一个叫blog_category的表,Django在这里又没有另行修改以适应youflog,导致出错。这样就好解决了,进入mysql,删除blog_category表,再syncdb,一切OK!!
12.看magicblog源码时发现html中比如title不能为中文,一直说
Caught UnicodeDecodeError while rendering
郁闷了好久,发现settings里有这一行:FILE_CHARSET= 'gb18030',又折腾了好久,发现把html文件开头的把开头的charset=utf-8"改为gb18030就OK了,但是即使把FILE_CHARSET改为utf-8也一样不能插入中文,否则报一样的错。。。。
13.Context_processor:http://zhidao.baidu.com/question/130397721.html ,从数据库更新什么的有用
菜鸟学Django(持续更新)相关推荐
- 有关数据库sql语句基础小白初学者可学(持续更新)
SELECT - 从数据库中提取数据 SELECT column_name,column_name FROM table_name; 实例: 下面的 SQL 语句从 "Websites&qu ...
- 本专栏所有力扣题目的目录链接, 刷算法题目的顺序(由易到难/面试频率)/注意点/技巧, 以及思维导图源文件问题(持续更新中)
这篇文章为本专栏所有力扣题目提供目录链接, 更加方便读者根据题型或面试频率进行阅读, 此外也会介绍我在刷题过程中总结的刷算法题目的顺序/注意点/技巧, 最后说下文中出现的思维导图源文件的问题 和 打卡 ...
- 【持续更新】 2022年 (2023届) 计算机 软件 保研经历 保研经验贴 (菜鸟 211 低rank 无科研成果 复旦/浙大/西安交大/中山/武大/华师大/东南/国科大杭高院)
写在最前 保研之旅已经画上句号了.作为一名边缘人,在排名.竞赛.科研.英语上都很平庸的普通人,一路走来,有太多的不易,太多的心酸. 在保研的过程中,从学长学姐和各类保研经验贴中获取了太多的帮助,汲取了 ...
- 一个菜鸟程序员的成长心路(持续更新)
学习还是要把心沉下来,不要老是想着去和别人比较,一惯的竞争式思维会导致自己很累,每个人都有自己的人生,不必苛求在每个阶段都去超过对手,要学会去过自己的生活.其实人生中快乐是最重要的,不置可否,成功的喜 ...
- 【Python】Python学到什么程度可以面试工作?------持续更新 ...
前言: 从事python学习,有爬虫.web后台.深度学习相关经验, 坐标北京欢迎骚扰. 本答案力求简洁和直击重点,代码部分使用Python3,更详细的解释请Google,回答有误请务必提醒答主,我将 ...
- 机器学习面试经验--2017年持续更新
机器学习面试经验--2017年持续更新 搜狐面试算法实习生 岗位搜狐后台开发(机器学习NLP) 10:00--11:10 1.首先自我介绍,blabla简单介绍了一下本科研究生学校专业方向,面试官开始 ...
- 嵌入式相关开源项目、库、资料------持续更新中
学习初期最难找的就是找学习资料了,本贴精心汇总了一些嵌入式相关资源,包括但不限于编程语言.单片机.开源项目.物联网.操作系统.Linux.计算机等资源,并且在不断地更新中,致力于打造全网最全的嵌入式资 ...
- 还在学Django! FastAPI Web 框架教程来了!
点击上方"菜鸟学Python",选择"星标"公众号 超级无敌干货,第一时间送达!!! 大家好,我是菜鸟哥! 都说学Python web开发有三驾马车,其中Dja ...
- 关于学习的网站和常用的工具网站的积累——来自贫民窟的孩子(持续更新)
文章目录 1.简单的唠叨一下 2.我要分享好东西啦,安利一波福利啦 2.1 关于PPT网站 2.2 关于刷题的网站 2.3 好的资料网站 2.4 常用的工具网站 3.学姐大大的安利博客 1.简单的唠叨 ...
最新文章
- b树删除节点每次只能删一个吗_面试官,请不要问我B+树了!!
- How to add and configure jetty server in maven pom.xml
- jquery的$().each,$.each的区别
- background-position 详解
- php 中文 过长 省略号,css实现文字过长显示省略号
- CENTOS6.3下zabbix安装部署
- 两个Python web框架:Django Tornado比较
- Django开发中常用的命令总结
- Java设计模式学习总结(13)——结构型模式之享元模式
- 电脑可以开机但是黑屏_铅锤哥:十五种电脑开机黑屏的原因与解决思路
- C++ STL 使用assign对list中的元素进行重置
- 自动化测试框架selenium+java+TestNG——配置篇
- 基于DEV控件库的webservice打印.repx模板
- 计算机数字合成音乐,数字音乐合成原理
- oracle ebs bug,ORACLE EBS 价目表的导入效能-存储过程BUG
- 百度地图高德地图谷歌地图腾讯地图商家数据采集
- 我的世界JAVA会支持光追吗_光线追踪改变了「我的世界」,华硕ROG2060S显卡的光追体验...
- 【Dlib人脸识别】1. Dlib人脸检测的基本原理
- python改变列的数据类型_更改Pandas中列的数据类型
- mysql数据库预处理_一种MySQL数据库中间件预处理方法与流程