现在正式开始博客开发

1、安装django1.4

如果你使用的是fedoraDVD版,安装时选择了web开发组建,这一步可以省略,因为它自带django环境

django下载地址 https://www.djangoproject.com/download/  这里我们选择最新版

然后在终端下打开下载目录

  1. tar xzvf Django-*.tar.gz
  2.  
  3. cd Django-*
  4.  
  5. sudo python setup.py install

如果系同时window

解压后再控制台进入解压后的目录

  1. python setup.py install

测试安装

打开Python的交互解释器

如果出现以下内容,安装成功!

  1. >>> import django
  2. >>> django.VERSION
  3. (1, 4, 1, 'final', 0)

2、新建project

打开终端 输入

  1. django-admin startproject blog

有些需要输入

  1. django-admin.py startproject blog

你会发现主文件夹下多出一个目录 blog

目录结构为

  1. blog/
  2. manage.py
  3. blog/
  4. __init__.py
  5. settings.py
  6. urls.py
  7. 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/

运行服务器

在终端打开项目目录 输入

  1. python manage.py runserver
  1. Validating models...
  2.  
  3. 0 errors found
  4. Django version 1.4.1, using settings 'blog.settings'
  5. Development server is running at http://127.0.0.1:8000/
  6. Quit the server with CONTROL-C.

出现以上选项说明运行服务器成功

访问 http://127.0.0.1:8000/ 你将看到

3、新建blogapp

在终端打开项目目录输入

  1. python manage.py startapp sblog

现在新建好了一个名为sblog的博客应用

  1. sblog/
  2. __init__.py
  3. models.py
  4. tests.py
  5. views.py

这个目录包含了这个app的模型和视图

4、models的配置

因为使用app必须用到数据库,现在我们配置一下数据库 打开setting.py

  1. DATABASES = {
  2. 'default': {
  3. 'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
  4. 'NAME': '/home/gs/blog/datas/mydata.db', # 这里是我数据库文件存放的目录,你应该替换成你自己的.
  5. 'USER': '', # Not used with sqlite3.
  6. 'PASSWORD': '', # Not used with sqlite3.
  7. 'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
  8. 'PORT': '', # Set to empty string for default. Not used with sqlite3.
  9. }
  10. }

因为python自带sqlite3,为了方便我们就直接使用。

其它数据库的配置参见 https://docs.djangoproject.com/en/1.4/ref/databases/

现在我们配置models.py

  1. from django.db import models
  2.  
  3. class Tag(models.Model):
  4. """docstring for Tags"""
  5. tag_name = models.CharField(max_length=20, blank=True)
  6. create_time = models.DateTimeField(auto_now_add=True)
  7.  
  8. def __unicode__(self):
  9. return self.tag_name
  10.  
  11. class Author(models.Model):
  12. """docstring for Author"""
  13. name = models.CharField(max_length=30)
  14. email = models.EmailField(blank=True)
  15. website = models.URLField(blank=True)
  16.  
  17. def __unicode__(self):
  18. return u'%s' % (self.name)
  19.  
  20. class Blog(models.Model):
  21. """docstring for Blogs"""
  22. caption = models.CharField(max_length=50)
  23. author = models.ForeignKey(Author)
  24. tags = models.ManyToManyField(Tag, blank=True)
  25. content = models.TextField()
  26. publish_time = models.DateTimeField(auto_now_add=True)
  27. update_time = models.DateTimeField(auto_now=True)
  28.  
  29. def __unicode__(self):
  30. return u'%s %s %s' % (self.caption, self.author, self.publish_time)

安装 models

首先修改setting.py

  1. MIDDLEWARE_CLASSES = (
  2. 'django.middleware.common.CommonMiddleware',
  3. 'django.contrib.sessions.middleware.SessionMiddleware',
  4. 'django.middleware.csrf.CsrfViewMiddleware',
  5. 'django.contrib.auth.middleware.AuthenticationMiddleware',
  6. 'django.contrib.messages.middleware.MessageMiddleware',
  7. 'django.middleware.locale.LocaleMiddleware',
  8. # Uncomment the next line for simple clickjacking protection:
  9. # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
  10. )
  11. INSTALLED_APPS = (
  12. 'django.contrib.auth',
  13. 'django.contrib.contenttypes',
  14. 'django.contrib.sessions',
  15. 'django.contrib.sites',
  16. 'django.contrib.messages',
  17. 'django.contrib.staticfiles',
  18. # Uncomment the next line to enable the admin:'django.contrib.admin',
  19. # Uncomment the next line to enable admin documentation:
  20. 'django.contrib.admindocs',
  21. 'sblog',
  22. )

然后,用下面的命令对校验模型的有效性:

  1. python manage.py validate

validate 命令检查你的模型的语法和逻辑是否正确。 如果一切正常,你会看到 0 errors found 消息。 如果有问题,它会给出非常有用的错误信息来帮助你 修正你的模型。

最后

  1. python manage.py syncdb

你将看到类似与下面的内容

  1. Creating tables ...
  2. Creating table auth_permission
  3. Creating table auth_group_permissions
  4. Creating table auth_group
  5. Creating table auth_user_user_permissions
  6. Creating table auth_user_groups
  7. Creating table auth_user
  8. Creating table django_content_type
  9. Creating table django_session
  10. Creating table django_site
  11. Creating table django_admin_log
  12. Creating table sblog_tag
  13. Creating table sblog_author
  14. Creating table sblog_blog_tags
  15. Creating table sblog_blog

因为我们修改setting.py时将

  1. 'django.contrib.admin',
  2. 'django.contrib.admindocs',

注释去掉了,所以在 执行

  1. python manage.py syncdb
  1. 时会 出现You just installed Django's auth system, which means you don't have any superusers defined.
  2.  
  3. Would you like to create one now? (yes/no): 
  4.  
  5. 让我们新建用户用于admin管理 ,创建用户就可以了
  6.  
  7. 5admin的配置使用
  8. 修改blog 目录下 urls.py
  9. 添加
  1. from django.contrib import admin
  2. admin.autodiscover()
  1. patterns 添加 (如果一直没改过该文件的话 只要将这两行注释去掉就可以了)
  1. url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
  2. url(r'^admin/', include(admin.site.urls)),

此时 打开 http://127.0.0.1:8000/admin/

就可以使用admin了,登录之后界面为:

如果你发现我们新建的sblog并没有出现,恭喜你,你有很强的观察能力,很细心,很。。。。

我还是接着说怎么用admin管理我们的sblog吧。

首先再sblog目录下新建admin.py 添加以下内容 再刷新admin页面 将会有惊喜哦

  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3.  
  4. from django.contrib import admin
  5. from sblog.models import Author, Blog, Tag
  6.  
  7. class AuthorAdmin(admin.ModelAdmin):
  8. """docstring for AuthorAdmin"""
  9. list_display = ('name', 'email', 'website')
  10. search_fields = ('name',)
  11.  
  12. class BlogAdmin(admin.ModelAdmin):
  13. """docstring for BlogAdmin"""
  14. list_display = ('caption', 'id', 'author', 'publish_time')
  15. list_filter = ('publish_time',)
  16. date_hierarchy = 'publish_time'
  17. ordering = ('-publish_time',)
  18. filter_horizontal = ('tags',)
  19. # raw_id_fields = ('author',) # 它是一个包含外键字段名称的元组,它包含的字段将被展现成`` 文本框`` ,而不再是`` 下拉框`` 。
  20.  
  21. admin.site.register(Author, AuthorAdmin)
  22. admin.site.register(Blog, BlogAdmin)
  23. 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博客开发】系列文章:

django开发博客(1) 入门的更多相关文章

  1. 纯django开发博客系统

    企业级教程:纯django开发博客系统 1.视频教程 https://www.duanshuilu.com/ 2.教程文档 https://www.duanshuilu.com/ 0.课程简介1.简价 ...

  2. Django开发博客 入门篇

    Django是神马? Django是一个开源免费的Web框架,使用Python编写.能够让你快速写出一个Web应用, 因为它包含了绝大部分的组件,比如认证,表单,ORM,Session,安全,文件上传 ...

  3. 使用django开发博客过程记录4——Category分类视图

    在写点击博客的所属分类,显示所有该分类的文章时真是让我想了好一会,为什么呢?因为我使用的是cbv模式开发的而不是简单的视图处理逻辑的,所以,有些操作会被包装好了,你并不知道它的细节,那么我们今天要实现 ...

  4. 使用django开发博客过程记录3——博客侧栏实现

    说起这个侧栏真是苦恼我很长时间,一开始以为和之前的一样传递额外参数就可以了就像下面这样: class IndexView(ListView): template_name = 'apps/index. ...

  5. Django开发博客- 三部曲

    其实在django中实现一个功能只需要三个步骤即可,这里我姑且叫它三部曲. 这三部曲就是: 定义urls映射 定义views 定义templates 什么是URL? URL就算一个WEB地址,你在浏览 ...

  6. 使用django开发博客过程记录5——日期归档和视图重写

    针对每条博客的观看次数我么是使用django的Mixin实现的: def get(self, request, *args, **kwargs): last_visit = request.sessi ...

  7. 使用django开发博客过程记录2——博客首页及博客详情的实现

    1.什么是CBV(Class-based views) 2.博客首页及博客详情实现 1.什么是CBV 什么是CBV?说白了就是以前是视图为处理请求返回响应的函数,有了cbv之后我们就可以用类处理请求和 ...

  8. Django开发博客- 部署

    安装Git Git是一个被大量程序员使用的”版本控制系统”.此软件可以跟踪任何时间文件的改变,这样你以后可以随时召回某个特定版本. windows系统下面可以下载git-scm安装.除了第5步”Adj ...

  9. Django开发博客- 模型

    django的模型就是用于在数据库中存储的某种类型的对象.在我们的博客系统中, 发表的文章就是一个模型,需要存储在数据库中. 这里我们使用django默认的sqlite3库,对于我们的这个小系统而言已 ...

随机推荐

  1. Java NIO学习与记录(五): 操作系统的I/O模型

    操作系统的I/O模型 在开始介绍NIO Reactor模式之前,先来介绍下操作系统的五种I/O模型,了解了这些模型,对理解java nio会有不小的帮助. 先来看下一个服务端处理一次网络请求的流程图: ...

  2. [转] linux alias 编写 函数 脚本

    [From] https://blog.csdn.net/csdnmonkey/article/details/53286314 案例 alias ttt='ttt(){ echo $1 ; };tt ...

  3. Python+USB+Vnet+FTP传输文件开发记录

    做一个Python+USB+Vnet+FTP传输文件开发记录

  4. Mac OS 10.12使用SecureCRT 8.1.4无法保存密码的问题解决

    参考上图取消Use Keychain即可. 参考: https://jingyan.baidu.com/article/915fc414fda5fb51394b20bd.html

  5. [iOS]使用Windows Azure來做iOS的推播通知 (转帖)

    這一篇我們用Windows Azure 的Mobile Service 來實作iOS的推播通知,底下我們分成三個階段來探討如何實作推播通知的服務: 第一階段: 開啓你的Windows Aure服務   ...

  6. Spring Boot的filter简单使用

    过滤器(Filter)的注册方法和 Servlet 一样,有两种方式:代码注册或者注解注册 1.代码注册方式 通过代码方式注入过滤器 @Bean     public FilterRegistrati ...

  7. VMware里Ubuntu-14.04-desktop的VMware Tools安装图文详解

    不多说,直接上干货!    前期步骤,请见如下 VMware里Ubuntukylin-14.04-desktop的VMware Tools安装图文详解 我这里,直接,是来说明,Ubuntu-14.04 ...

  8. centos6 vps部署rails

    centos 6 vps初始化部署rails应用1 ssh登录 vpsssh -p port root@server_ip_address 2 添加用户 adduser usernamepasswd ...

  9. java算法----------常用的加密算法

    散列算法(单向散列,不可逆) MD5(Message Digest Algorithm 5) SHA(Secure Hash Algorithm)   对称加密(加密解密使用同一密钥,速度快) DES ...

  10. 入门系列之在Ubuntu 14.04上备份,还原和迁移MongoDB数据库

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由信姜缘 发表于云+社区专栏 MongoDB是最受欢迎的NoSQL数据库引擎之一.它以可扩展,强大,可靠和易于使用而闻名.在本文中,我们 ...