Django速成--创建一个简单的blog

Django速成--创建一个简单的blog

 

开启cmd…
* 运用:>cd D:\projects 设定保存django项目目录为当前目录。
* 运用:>python C:\python25\scripts\django-admin.py mysite 创建一个django项目mysite。
* 运用:>python D:\projects\mysite\manage.py runserver 启动django内置的开发服务器webserver,在浏览器中输入:
http://localhost:8000/ 即可访问该项目。
项目根目录下有:__init__.py、manage.py、settings.py和urls.py。
* __init__.py 会把这个项目目录变成一个Python的包(package)–相关Python模块的一个集合。这让我们可以用Python的“点记号”(dot-notation)来指定项目中的某个部分,比如mysite.url。
* manage.py 是一个同这个Django项目一起工作的工具。可以从它在目录列表中的权限里看到它是可以执行的。提供简单化的 django-admin.py命令,特别是可以自动进行 DJANGO_SETTINGS_MODULES 和 PYTHONPATH 的处理,而没有这个命令,处理上面环境变量是件麻烦的事情
* setting.py 是django的配置文件。文本包含了项目的默认设置,包括数据库信息、调试标志以及其他一些重要的变量。项目里安装的任何应用都可以访问这个文件。
* url.py 在Django里叫URLconf,它是一个将URL模式映射到你应用程序上的配置文件,URLconf是Django里非常强大的一个特性。
开发服务器
优点有:
* 不需要安装Apache、Lighttpd,或是其他任何实际生产所需要的Web服务器软件。
* 它会自动检测到你对Python源码的修改并且重新加载那些模块。相比每次修改代码后都要手动地重启Web服务器可是大大地节约了不少时间。
* 它知道如何为admin应用程序寻找并显示静态的媒体文件,所以就可以直接使用它。
1 创建Blog应用
>python D:\projects\mysite\manage.py startapp blog 创建应用(即Django说法“app”)。现在在项目的目录下有了一个blog目录。
blog目录下有:__init__.py、models.py、views.py三个文件。
修改项目的settings.py文件:
在INSTALLED_APPS中加入:’mysite.blog’,
2 设计Blog应用的Model
models.py文件是应用的核心部分。这是定义应用数据结构的地方。我们的数据库表就是基于此而建立。
# filename = models.py
from django.db import models
class BlogPost(models.Model):
title = models.CharField(max_length = 150)
body = models.TextField()
timestamp = models.DateTimeField()
上述“BlogPost”对象有三个变量,其实,Django会默认为每个model自动加上一个自增的、唯一的id变量,即四个变量。
django.db.models.Model是Django为数据model准备的标准基类,它是Django强大的对象关系映射(ORM)系统的核心。
3 设计数据库
创建一个新的数据库,取名为“djangodb”,这是个空的数据库。以MySQL为例。
修改项目的settings.py文件:
DATABASES = {
‘default’: {
‘ENGINE’: ‘mysql’, # Add ‘postgresql_psycopg2′, ‘postgresql’, ‘mysql’, ‘sqlite3′ or ‘oracle’.
‘NAME’: ‘djangodb’,   # Or path to database file if using sqlite3.
‘USER’: ‘root’,  # Not used with sqlite3.
‘PASSWORD’: ’123456′,  # Not used with sqlite3.
‘HOST’: ‘localhost’,  # Set to empty string for localhost. Not used with sqlite3.
‘PORT’: ”,  # Set to empty string for default. Not used with sqlite3.use the default 3306
}
}

使用命令:>python D:\projects\mysite\manage.py syncdb   — 改变了模型(models.py),即要运行此命令
当然,第一次运行该命令时,即要为该项目设置一个超级管理权限。
4 设置自动admin应用
这个应用可要可不要。自动化的后台应用程序admin称得上是Django“皇冠上的明珠”。它可以为每个应用的模型创建简单的可视化的“CRUD”(Create、Read、Update、Delete)操作。
修改项目的settings.py文件:
在INSTALLED_APPS中加入:’django.contrib.admin’,
使用命令:>python D:\projects\mysite\manage.py syncdb
修改url.py文件:
from django.contrib import admin
admin.autodiscover()
(r’^admin/’, include(admin.site.urls)),

然后设置需要编辑的app的model:
在之前的blog应用的models.py中加入:
from django.contrib import admin
admin.site.register(BlogPost)
为admin模块的编辑修改样式;
在之前的blog应用的models.py中加入一个类:
class BlogPostAdmin(admin.ModelAdmin):
list_display = (‘title’, ‘timestamp’)
admin.site.register(BlogPost, BlogPostAdmin)
http://127.0.0.1:8000/admin/
5 建立Blog的公共部分
从Django的角度来说,一个页面具有三个典型的组件:
* 一个模板(template),模板负责将传递进来的信息显示出来(用一种类似Python字典的对象Context)。
* 一个视图(view)函数,它负责获取要显示的信息,通常都是从数据库里取得。
* 一个URL模式,它用来把收到的请求和你的视图函数匹配,有时也会向视图传递一些参数。
5.1 创建模板
在blog应用的根目录下创建一个文件夹templates,这个templates目录的名字则是强制的。Django在默认情况下会在搜索模板时逐个查看你安装的应用程序下的每一个templates目录。
在templates目录下创建一个文件,archive.html
<!– filename = archive.html  –>
{% extends “base.html” %}
{% block content %}
{% for post in posts %}
<h2>{{ post.title }}</h2>
<p>{{ post.timestamp|date:”l, F jS” }}</p>
<p>{{ post.body }}</p>
{% endfor %}
{% endblock %}
使用了标签模板base.html,并将这个模板里的命名块的所有内容填入到那个模板里相应的块里去。
<!– filename = base.html  –>
<html>
<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; marin-top: 2em }
p { margin: lem 0 }
</style>
<body>
<h1>blog for django     –designed by libear</h1>
{% block content %}
{% endblock %}
</body>
</html>
5.2 创建视图
修改blog/views.py。
# filename = views.py
from django.template import loader, Context
from django.http import HttpResponse
from mysite.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))
每个Django视图函数都将django.http.HttpRequest对象作为它的第一个参数,每个Django视图函数都会返回一个django.http.HttpResponse对象。
5.3 创建一个URL模式
修改mysite/urls.py:
增加语句:(r’^blog/’, include(‘mysite.blog.urls’)),
在blog根目录下创建urls.py:
# filename = urls.py
from django.conf.urls.defaults import *
from mysite.blog.views import archive

urlpatterns = patterns(”,
url(r’^$’, archive),    # archive is ‘mysite.blog.views.archive’
)
这样访问:
http://127.0.0.1:8000/blog/
5.4 排序及模板过滤器
排序:
修改应用的models.py文件:
加入类:
class Meta:
ordering = (‘-timestamp’)
模板过滤器:
修改应用的模板templates目录中的archive.html文件:
<p>{{ post.timestamp|date }}</p>

<p>{{ post.timestamp|date:”1, F jS” }}</p>

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值