django 简易博客开发 1 安装、创建、配置、admin使用
首先贴一下项目地址吧 https://github.com/goodspeedcheng/sblog
到现在位置项目实现的功能有:
1、后台管理使用Admin ,前端显示使用bootstrap
2、评论使用的系统自带comments 支持ajax
3、支持markdown 代码高亮 使用markdown + Pygments
4、使用的gravatar头像服务
使用的环境: fedora 17 + django1.4 + python2.7 + sqlite3
需要的模块支持: markdown + Pygments 其它 django第三方app使用时再介绍
现在正式开始博客开发
1、安装django1.4
如果你使用的是fedoraDVD版,安装时选择了web开发组建,这一步可以省略,因为它自带django环境
django下载地址 https://www.djangoproject.com/download/ 这里我们选择最新版
然后在终端下打开下载目录
tar xzvf Django-*.tar.gz 。 cd Django-* 。 sudo python setup.py install
如果系同时window
解压后再控制台进入解压后的目录
python setup.py install
测试安装
打开Python的交互解释器
如果出现以下内容,安装成功!
>>> import django
>>> django.VERSION
(1, 4, 1, 'final', 0)
2、新建project
打开终端 输入
django-admin startproject blog
有些需要输入
django-admin.py startproject blog
你会发现主文件夹下多出一个目录 blog
目录结构为
blog/
manage.py
blog/
__init__.py
settings.py
urls.py
wsgi.py
manage.py :一种命令行工具,可让你以多种方式与该 Django 项目进行交互。 键入python manage.py help,看一下它能做什么。
__init__.py :让 Python 把该目录当成一个开发包 (即一组模块)所需的文件。 这是一个空文件,一般你不需要修改它
settings.py :该 Django 项目的设置或配置。 查看并理解这个文件中可用的设置类型及其默认值
urls.py:django项目的URL设置。 可视其为你的django网站的目录
wsgi.py: An entry-point for WSGI-compatible webservers to serve your project.See How to deploy with WSGI for more details.
具体使用方法参考 文档 https://docs.djangoproject.com/en/1.4/intro/tutorial01/
运行服务器
在终端打开项目目录 输入
python manage.py runserver
Validating models... 0 errors found
Django version 1.4.1, using settings 'blog.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
出现以上选项说明运行服务器成功
访问 http://127.0.0.1:8000/ 你将看到
3、新建blogapp
在终端打开项目目录输入
python manage.py startapp sblog
现在新建好了一个名为sblog的博客应用
sblog/
__init__.py
models.py
tests.py
views.py
这个目录包含了这个app的模型和视图
4、models的配置
因为使用app必须用到数据库,现在我们配置一下数据库 打开setting.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': '/home/gs/blog/datas/mydata.db', # 这里是我数据库文件存放的目录,你应该替换成你自己的.
'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.
}
}
因为python自带sqlite3,为了方便我们就直接使用。
其它数据库的配置参见 https://docs.djangoproject.com/en/1.4/ref/databases/
现在我们配置models.py
from django.db import models class Tag(models.Model):
"""docstring for Tags"""
tag_name = models.CharField(max_length=20, blank=True)
create_time = models.DateTimeField(auto_now_add=True) def __unicode__(self):
return self.tag_name class Author(models.Model):
"""docstring for Author"""
name = models.CharField(max_length=30)
email = models.EmailField(blank=True)
website = models.URLField(blank=True) def __unicode__(self):
return u'%s' % (self.name) class Blog(models.Model):
"""docstring for Blogs"""
caption = models.CharField(max_length=50)
author = models.ForeignKey(Author)
tags = models.ManyToManyField(Tag, blank=True)
content = models.TextField()
publish_time = models.DateTimeField(auto_now_add=True)
update_time = models.DateTimeField(auto_now=True) def __unicode__(self):
return u'%s %s %s' % (self.caption, self.author, self.publish_time)
安装 models
首先修改setting.py
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.locale.LocaleMiddleware',
# Uncomment the next line for simple clickjacking protection:
# 'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
'django.contrib.admindocs',
'sblog',
)
然后,用下面的命令对校验模型的有效性:
python manage.py validate
validate 命令检查你的模型的语法和逻辑是否正确。 如果一切正常,你会看到 0 errors found 消息。 如果有问题,它会给出非常有用的错误信息来帮助你 修正你的模型。
最后
python manage.py syncdb
你将看到类似与下面的内容
Creating tables ...
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_user_permissions
Creating table auth_user_groups
Creating table auth_user
Creating table django_content_type
Creating table django_session
Creating table django_site
Creating table django_admin_log
Creating table sblog_tag
Creating table sblog_author
Creating table sblog_blog_tags
Creating table sblog_blog
因为我们修改setting.py时将
'django.contrib.admin',
'django.contrib.admindocs',
注释去掉了,所以在 执行
python manage.py syncdb
时会 出现You just installed Django's auth system, which means you don't have any superusers defined. Would you like to create one now? (yes/no): 让我们新建用户用于admin管理 ,创建用户就可以了 5、admin的配置使用
修改blog 目录下 urls.py
添加
from django.contrib import admin
admin.autodiscover()
在 patterns 添加 (如果一直没改过该文件的话 只要将这两行注释去掉就可以了)
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
url(r'^admin/', include(admin.site.urls)),
此时 打开 http://127.0.0.1:8000/admin/
就可以使用admin了,登录之后界面为
如果你发现我们新建的sblog并没有出现,恭喜你,你有很强的观察能力,很细心,很。。。。
我还是接着说怎么用admin管理我们的sblog吧。
首先再sblog目录下新建admin.py 添加以下内容 再刷新admin页面 将会有惊喜哦
#!/usr/bin/python
# -*- coding: utf-8 -*- from django.contrib import admin
from sblog.models import Author, Blog, Tag class AuthorAdmin(admin.ModelAdmin):
"""docstring for AuthorAdmin"""
list_display = ('name', 'email', 'website')
search_fields = ('name',) class BlogAdmin(admin.ModelAdmin):
"""docstring for BlogAdmin"""
list_display = ('caption', 'id', 'author', 'publish_time')
list_filter = ('publish_time',)
date_hierarchy = 'publish_time'
ordering = ('-publish_time',)
filter_horizontal = ('tags',)
# raw_id_fields = ('author',) # 它是一个包含外键字段名称的元组,它包含的字段将被展现成`` 文本框`` ,而不再是`` 下拉框`` 。 admin.site.register(Author, AuthorAdmin)
admin.site.register(Blog, BlogAdmin)
admin.site.register(Tag)
其中 AuthorAdmin 和 BlogAdmin 是 自定义ModelAdmi类 用于自定义admin显示
list_display = ('caption', 'id', 'author', 'publish_time') 表示 按照 caption id author publish_time 显示 另外,点击每个列的列头可以对那列进行排序。search_fields = ('name',) 刷新浏览器,你会在页面顶端看到一个查询栏。我们刚才所作的修改列表页面,添加了一个根据姓名查询的查询框list_filter = ('publish_time',) 用于在右边生成一个过滤器,按照发表时间过滤date_hierarchy = 'publish_time' 也是时间过滤器 修改好后,页面中的列表顶端会有一个逐层深入的导航条,它从可用的年份开始,然后逐层细分到月乃至日。ordering = ('-publish_time',) 按照发表时间排序 默认是从前往后排序 加‘-’表示将最近发表的放到前面,从后往前倒序排列filter_horizontal = ('tags',) 用于多对多字段显示,出现一个精巧的JavaScript过滤器,它允许你检索选项,然后将选中的tag从Available框移到Chosen框,还可以移回来
其它一些自定义方法参见文档吧 https://docs.djangoproject.com/en/1.4/ref/contrib/admin/
到现在为止,我们已经可以使用admin管理我们的博客
django 简易博客开发 1 安装、创建、配置、admin使用
http://www.cnblogs.com/cacique/archive/2012/09/29/2707976.html
django 简易博客开发 2 模板和数据查询
http://www.cnblogs.com/cacique/archive/2012/09/30/2709143.html
django 简易博客开发 3 静态文件、from 应用与自定义
http://www.cnblogs.com/cacique/archive/2012/10/01/2709668.html
django 简易博客开发 4 comments库使用及ajax支持
http://www.cnblogs.com/cacique/archive/2012/10/03/2710803.html
django 简易博客开发 5 markdown支持、代码高亮、gravatar头像服务
http://www.cnblogs.com/cacique/archive/2012/10/07/2713703.html
django 简易博客开发 1 安装、创建、配置、admin使用的更多相关文章
- django 简易博客开发 1 安装、创建、配置、admin使用(转)
Django 自称是“最适合开发有限期的完美WEB框架”.本文参考<Django web开发指南>,快速搭建一个blog 出来,在中间涉及诸多知识点,这里不会详细说明,如果你是第一次接触D ...
- django 简易博客开发 5 markdown支持、代码高亮、gravatar头像服务
上一篇博客介绍了comments库使用及ajax支持,现在blog已经具备了基本的功能,但是只能发表文字,不支持富文本编辑.今天我们利用markdown添加富文本支持. markdown语法说明: h ...
- django 简易博客开发 4 comments库使用及ajax支持
首先还是贴一下源代码地址 https://github.com/goodspeedcheng/sblog 上一篇文章我们介绍了静态文件使用以及如何使用from实现对blog的增删改,这篇将介绍如何给 ...
- django 简易博客开发 3 静态文件、from 应用与自定义
首先还是贴一下源代码地址 https://github.com/goodspeedcheng/sblog 上一篇博客我们介绍了 django 如何在views中使用templates以及一些常用的数 ...
- django 简易博客开发 2 模板和数据查询
首先还是贴一下项目地址 https://github.com/goodspeedcheng/sblog 因为代码全在上面 上一篇博客我们介绍了 django的安装配置,新建project,新建a ...
- Django个人博客开发 | 前言
本渣渣不专注技术,只专注使用技术,不是一个资深的coder,是一个不折不扣的copier 1.前言 自学 Python,始于 Django 框架,Scrapy 框架,elasticsearch搜索引擎 ...
- 万里长征第二步——django个人博客(第一步 ——创建主页)
运行命令行工具,输入:pip install virtualenv --安装virtualenv库. virtualenv blog_project_venv ——使用virtualenv创建一个虚 ...
- 万里长征第二步——django个人博客(第五步 ——配置后台admin)
在urls.py文件中配置admin路径 from django.conf.urls import url from django.contrib import admin from blog.vie ...
- 简易博客开发(8)----django1.9 博客部署到pythonanywhere上
准备工作 首先需要注册一下,pythonanywhere的免费账户有一定的限制,只能创建一个web app,不能绑定独立域名,不能通过ssh连接,不过只是搭一个project也是够用了. 注册成功之后 ...
随机推荐
- npm与cnpm
npm介绍 说明:npm(node package manager)是nodejs的包管理器,用于node插件管理(包括安装.卸载.管理依赖等) 使用npm安装插件:命令提示符执行npm instal ...
- 摄像头调用代码 笔记本的话,本身有一个摄像头,由于用的usb摄像头,需要把笔记本的摄像头禁用后,再使用
摄像头调用代码 笔记本的话,本身有一个摄像头,由于用的usb摄像头,需要把笔记本的摄像头禁用后,再使用 <!DOCTYPE html> <html lang="en&quo ...
- ajax请求的时候get 和post方式的区别
ajax请求的时候get 和post方式的区别?一个在url后面一个放在虚拟载体里面有大小限制安全问题应用不同一个是论坛等只需要请求的,一个是类似修改密码的
- run_debug和run_demo的区别
run_demo:给一张图,直接生成测试出来的框,输入不用给gt框 run_debug:生成ap值,生成的图片既有gt框也有测试得到的结果框 run_demo的源码demo_test放在example ...
- JavaSE-28 hashCode()方法、equals()方法和==相关概念
概述 Java中,Object类是所有类的基类:如果一个类没有明确继承其他已定义的类,则默认继承Object类. Object类提供了以下方法,对于其他方法,请参考前期专题描述. hashCode() ...
- sqlserver 分页问题
1.top 主要是在sql server 2000中使用,效率较差 2.row_number函数 这种方法是sql server 2005以后,支持了row_number函数后,才开始使用的. dec ...
- svn up 更新 校验和不匹配
BUNTU/Iproject/svn/dzradioclock-code/trunk/libs/dzlib/components/packages/DelphiXE2/dzComponentsR.dp ...
- 三、C++ const分析
1.C语言中的const: const修饰的变量是只读的,本质还是变量 const修饰的局部变量在栈上分配空间 const修饰的全局变量在只读存储区分配空间 const只在编译期有用,在运行期无效 c ...
- LInux设备驱动分析—— kmalloc和kzalloc函数
今晚在研究EVM5728开发板上面Linux系统的IIC设备驱动程序,偶然之间看到驱动程序中有一处使用了kzalloc函数,本人之前都是使用Linux内核提供的kmalloc / kfree函数来给设 ...
- Struts2的线程安全性
[什么是线程安全性?] 在多线程并发访问的情况下,如果一个对象中的变量的值不会随访问的线程而变化则是线程安全的.反之则称为非线程安全的. [Servlet是线程安全的吗?] [非线程安全的] publ ...