基于Aptana3+Django开发blog的示例
2011-08-16 02:19
369 查看
开发环境:Win XP、Python26、Django1.1
前期需要准备的环境:安装好Python、Django(需要将Scripts目录添加至系统变量中)
1、建立一个Django Project前期需要准备的环境:安装好Python、Django(需要将Scripts目录添加至系统变量中)
2、配置IDE的环境
3、选择django的版本号,先查看当前系统中的django版本号(IDE默认选择1.2 or later)
这里默认使用sqlite,先使用默认的进行处理(有兴趣的可以改为mysql试试)
默认生成的4个文件:
先跑起来看一下效果:
注意选择Debug Configurations,选择要运行的项目和主模块(选择项目根目录下的manage.py即可)
默认监听的是8000,这里修改为9000
控制台上的信息:
4、修改配置文件settings.py
找到TIME_ZONE,修改为TIME_ZONE = 'Asia/Shanghai'
找到LANGUAGE_CODE修改为LANGUAGE_CODE = 'zh-CN'
5、建立一个blog app应用(也可以在项目的windows中的目录使用命令,效果是一样)
6、修改settings.py,添加对blog的引用
找到INSTALLED_APPS,在尾部添加一行“demo.blog”(项目为demo、应用为blog)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'demo.blog',
) 7、打开blog/models.py,添加一个文章类:
from django.db import models # Create your models here.
class BlogPost(models.Model):
title = models.CharField(max_length=150)
body = models.TextField()
timestamp = models.DateTimeField() 8、右击项目,执行sync DB,在控制台上可看到如下信息
9、修改settings.py,添加admin app
找到INSTALLED_APPS,在django.contrib.auth下一行添加'django.contrib.admin',
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.admin',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'demo.blog',
) 修改数据库的连接(工程根目录下的settings.py):
再执行一个sync DB
10、修改项目根目录下的urls.py,去掉urlpatterns中最后一项对admin的注释
(r'^admin/', include(admin.site.urls)),
---将最前面的“#”去掉即可,需要引入包“from django.contrib import admin” 在admin后面按下alt+/就可以自动导入包了
在blog/models.py中,添加一行
admin.site.register(BlogPost)
查看一下项目运行的效果:
添加两条数据后的效果显示,有一些难看,待会进行修改
在blog/models.py添加一个ModelAdmin类
from django.db import models from django.contrib import admin # Create your models here. class BlogPost(models.Model): title = models.CharField(max_length=150) body = models.TextField() timestamp = models.DateTimeField() class BlogPostAdmin(admin.ModelAdmin): list_display = ('title', 'timestamp') admin.site.register(BlogPost, BlogPostAdmin)
刷新页面,就变成下面这样子了
11、使用模板,显示添加的数据
在blog目录下建立一个名为templates的目录,在此目录下建立一个名为archive.html(demo/blog/templates/archive.html),输入如下内容:
{% for post in posts %} <h2>{{ post.title }}</h2> <p>{{ post.timestamp }}</p> <p>{{ post.body }}</p> {% endfor %}
12、打开blog的views.py,添加对视图的控制
# Create your views here. from django.template import loader, Context from django.http import HttpResponse from demo.blog.models import BlogPost def archive(request): posts = BlogPost.objects.all() t = loader.get_template("archive.html") c = Context({ 'posts': posts }) return HttpResponse(t.render(c))
[/code]
13、在主urls.py中添加对blog的url匹配,在最后一行添加(r'^blog/', include('demo.blog.urls')),
urlpatterns = patterns('', # Example: # (r'^demo/', include('demo.foo.urls')), # Uncomment the admin/doc line below and add 'django.contrib.admindocs' # to INSTALLED_APPS to enable admin documentation: # (r'^admin/doc/', include('django.contrib.admindocs.urls')), # Uncomment the next line to enable the admin: (r'^admin/', include(admin.site.urls)), (r'^blog/', include('demo.blog.urls')), )
14、在blog中新建立一个urls.py文件,添加如下内容
from django.conf.urls.defaults import * from demo.blog.views import archive urlpatterns = patterns('', url(r'^$', archive), )
现在的运行效果:
这个页面有两个问题:
1、没有按发表的时间降序排列文章
2、界面太简单,需要修饰一下
改进:
在blog/templates目录下建立一个名为base.html的页面
<html> <head> <style type="text/css"> body { color: #efd; background: #453; padding: 0 5em; margin: 0 } h1 { padding: 2em 1em; background: #675 } h2 { color: #bf8; border-top: 1px dotted #fff; margin-top: 2em } p { margin: 1em 0 } </style> </head> <body> <h1>blogsite.example.com</h1> {%block content%} {%endblock%} </body> </html>
修改archive.html页面
{% extends "base.html" %}
{% block content %}
{% for post in posts %} <h2>{{ post.title }}</h2> <p>{{ post.timestamp }}</p> <p>{{ post.body }}</p> {% endfor %}
{% endblock %}
[/code]
现在的界面漂亮一些了
修改<p>{{ post.timestamp }}</p>为<p>{{ post.timestamp|date:"l, F jS" }}</p>
在blog/views.py中,将文章按时间降序排列(加一个”-”,不加则为升序,还可以添加按标题排序等)
# Create your views here. from django.template import loader, Context from django.http import HttpResponse from demo.blog.models import BlogPost def archive(request): posts = BlogPost.objects.all().order_by("-timestamp") t = loader.get_template("archive.html") c = Context({ 'posts': posts }) return HttpResponse(t.render(c))
最终的运行效果
小提示,在使用Aptana3进行开发,选中的内容背景色默认是黄色,在底色为黑色的IDE中,很难看清选中的是什么内容,可以按下图中的修改一下
相关文章推荐
- 基于Aptana3+Django开发blog的示例
- 基于Aptana3+Django开发blog的示例
- vmaig_blog 一个基于 Django1.8 跟 Bootstrap3 开发的 博客系统
- Django开发中复选框用法示例
- 基于Django开发的SkyNet博客一——创建模型
- 基于J2EE的Blog平台开发
- iOS_CNBlog项目开发 (基于博客园api开发)
- 基于Django Form源码开发自定义Form组件
- 【Python】djangorestframework 基于django框架的接口开发
- 基于Django开发的SkyNet博客四——编辑界面
- myeclipse6.5上基于JAX-WS开发Webservice(中文示例)
- django开发Blog(2)
- 玩聚网目前也是基于Python的Django框架开发
- 关于使用Aptana+Pydev构建Python开发环境(Django)
- 基于Django的独立运行python脚本开发
- 基于 Django 框架 Web 开发
- 如何用django开发一个简易个人Blog
- 基于python、Django做Web开发
- FlexyGears:基于Django开发的个人日志系统
- 【day 17】python编程:从入门到实践学习笔记-基于Django框架的Web开发-设计样式和部署(一)