基于Aptana3+Django开发blog的示例

开发环境:Win XP、Python26、Django1.1 前期需要准备的环境:安装好Python、Django(需要将Scripts目录添加至系统变量中)

1、建立一个Django Project

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))

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 %}

现在的界面漂亮一些了

修改<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中,很难看清选中的是什么内容,可以按下图中的修改一下

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Seebug漏洞平台

使用 XML 内部实体绕过 Chrome 和 IE 的 XSS 过滤器

来源:BypassingXSSFiltersusingXMLInternalEntities 原作者:DavidLitchfield (david@davidl...

415100
来自专栏程序员的SOD蜜

使用“消息服务框架”(MSF)实现分布式事务的三阶段提交协议(电商创建订单的示例)

1,示例解决方案介绍 在上一篇 《消息服务框架(MSF)应用实例之分布式事务三阶段提交协议的实现》中,我们分析了分布式事务的三阶段提交协议的原理,现在我们来看看...

34190
来自专栏向治洪

React Native移植原生Android

(一)前言 之前已经写过了有关React Native移植原生Android项目的文章,不过因为RN版本更新的原因吧,跟着以前的文章可能会出现一些问题,对于初学...

20570
来自专栏逸鹏说道

并发编程~先导篇上

并发 :一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。

21280
来自专栏依乐祝

Net Core集成Exceptionless分布式日志功能以及全局异常过滤

这篇文章有一部分内容翻译自官方文档,[点我阅读][https://github.com/exceptionless/Exceptionless.Net/wiki...

11320
来自专栏Golang语言社区

gRPC服务发现&amp;负载均衡

构建高可用、高性能的通信服务,通常采用服务注册与发现、负载均衡和容错处理等机制实现。根据负载均衡实现所在的位置不同,通常可分为以下三种解决方案:

87120
来自专栏北京马哥教育

利用anaconda搞定所有Python安装问题

很多人按照我之前的Python安装教程可以成功,但是方法之下必定有BUG,所以还有一部分人(电脑)无法配置成功,有没有一个软件可以自带一系列常用的安装包!!! ...

64260
来自专栏一个会写诗的程序员的博客

Node.js 中使用 ES6 中的 import / export 的方法大全

Node.js 中使用 ES6 中的 import / export 的方法大全

41120
来自专栏魏艾斯博客www.vpsss.net

如何创建.htaccess 文件

关于.htaccess 文件,一般用于虚拟主机中,使用 VPS 建站的可以忽略了。对于使用虚拟主机建站的朋友来说.htaccess 文件可以用作伪静态化设置和 ...

47280
来自专栏编程思想之路

Android四大组件完全解析(一)---Activity

本文参考\android\android\frameworks\base\core\java\android\app\Activity.java文件中的类注释,...

514100

扫码关注云+社区

领取腾讯云代金券