通过django 速成 blog
1、 创建项目
33进入在python目录下的scripts文件后执行
django-admin.py startproject mysite
这样就生成了名为mysite 的工程。
可执行.\manage.py runserver 运行开发服务器此时, 终端下会输出
登录 http://127.0.0.1:8000/ 显示这样一个页面
同时终端会输出[13/Aug/2014 01:05:14] "GET / HTTP/1.1" 200 1957
从左往右依次为时间戳、请求、http状态码 、 字节数
2、 创建blog应用
执行 .\manage.py startapp blog
这样就创建了blog app, 在项目(mysite)的目录下会有blog的目录。
之后还需要 在mysite 目录下的sittting.py 中找到元组INSTALLED_APPS , 在元组的末尾添上‘blog.app’, (注意逗号)
3、 设计model
在models.py中加入下列代码
from django.db import models
from django.contrib import admin
class BlogPost(models.Model):
title = models.CharField(max_length = 150)
body = models.TextField()
timestamp = models.DateTimeField()
4、 设置数据库
如果是使用sqlite3,只需在setting.py 的 Databases字典中补全 前两项 即‘ENGINE’: 'django.db.backends.sqlite3'
‘NAME’ = ****\django.db #为数据存放地址,自定义
然后执行.\manage.py syncdb #同步数据 终端中,会看到下列输出
Creating table auth_message
Creating table auth_group
……..
之后会被问一下与django.contrib.auth app有关的问题,许按步 骤填写
5、 设置自动admin应用
在 settings.py 中 ‘django.contrib.auth’ 下添加下列一行
‘django.contrib.admin’
然后再次执行syncdb命令 ,
设置完app后, 需要为它指定一个URL
在urls.py 中 去掉rl(r'^admin/', include(admin.site.urls)) 前的注释符
最后, 在 models.py 导入admin
from django.contrib import admin
并在最后加上一行注册model的代码
admin.site.register(BlogPost)
6、 试用admin 登录 127.0.0.1:8000/admin 后输入 用户名和密码会看到一下页面
随意编辑几篇 blog并保存。为了然列表更美观在models.py中添加blogpostadmin类,并将它加到注册代码里
from django.db import models
from django.contrib import admin
class BlogPost(models.Model):
title = models.CharField(max_length = 150)
body = models.TextField()
timestamp = models.DateTimeField()
class Meta:
ordering = ('-timestamp',)
class BlogPostAdmin(admin.ModelAdmin):
list_display = ('title', 'timestamp')
admin.site.register(BlogPost, BlogPostAdmin) #regiet blogpost model
刷新一下页面, 会看到
相比原先有了 title 和timestamp 栏
7、 建立blog的公共部分。
创建文件 archive.html 保存到blog\templates中内容如下
{% for post in posts %}
<h2>{{post.title}}</h2>
<p>{{post.timestamp|date}}</p>
<p>{{ post.body}}</p>
{% endfor %}
然后创建视图函数打开blog\view.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))
之后再创建 url模式 在mysite/urls.py 添加
url(r'^blog/', include('mysite.blog.urls')),
这会捕捉任何以blog/开始的请求, 并传递给接下来的url模式
Mysite/blog/urls.py:
from django.conf.urls.defaults import *
from mysite.blog.views import archive
urlpatterns = patterns('',
url(r'^$', archive),
)
8、 最后润色
创建base.html 文件, 并保存在mysite/blog/templates内容如下:
<html>
<style type="text/css">
body { color: #cdcdcd; backgroud:#cdcdcd; padding: 0 5em; margin: 0}
h1 { padding:2em 1em; backgroud: #675}
h2{color: #cdcdcd; border-top: 1px dotted #cdcdcd; margin-top; 2em}
p {margin: 1em 0}
</style>
<body>
<h1>mysite.example.com</h1>
{% block content %}
{% endblock %}
</body>
</html>
然后更新achive.html内容:
{% extends "base.html" %}
{% block content %}
{% for post in posts %}
<h2>{{post.title}}</h2>
<p>{{post.timestamp|date}}</p>
<p>{{ post.body}}</p>
{% endfor %}
{% endblock %}
运行后登陆http://127.0.0.1:8000/blog/
可在models.py文件中添加嵌套类 Meta:是blog 按顺序排序
from django.db import models
from django.contrib import admin
class BlogPost(models.Model):
title = models.CharField(max_length = 150)
body = models.TextField()
timestamp = models.DateTimeField()
class Meta:
ordering = ('-timestamp',)
class BlogPostAdmin(admin.ModelAdmin):
list_display = ('title', '-timestamp')
admin.site.register(BlogPost, BlogPostAdmin) #regiet blogpost model
‘-timestamp’为降序 ‘timestamp’为升序
通过django 速成 blog的更多相关文章
- Django架设blog步骤
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- Django架设blog步骤(转)
最近在研究Python,起初是因为想做个爬虫,昨天看了点基础教程,台湾辅仁大学的视频,了解了python的语法规范及语言特性,主要有三: 1.动态脚本语言: 2.语法简洁,强制缩进: 3.应用广泛,w ...
- Django 开发blog未完待续
[root@sishen simpleblog]# python3.5 Python 3.5.4 (default, Sep 20 2017, 20:37:45) [GCC 4.4.7 2012031 ...
- django创建blog
如果本文看不懂的,去看的我视频吧!http://www.testpub.cn/ ------------------------------------------- Django 自称是" ...
- django demo --blog
详情,请看虫师博客http://www.cnblogs.com/fnng/p/3737964.html 和https://my.oschina.net/matrixchan/blog/184445 ...
- 三个在线django速成教程(转)
add by zhj: 除了这几个在线的,有些书也不错 1. Two Scoops of Django 2. Instant Django 1.5 Application Development St ...
- Django创建一个简单的blog
1. 使用django-admin.py 创建mysite项目 sunny@sunny-ThinkPad-T450:~/PycharmProjects$ django-admin.py startpr ...
- 《Django By Example》第二章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:翻译完第一章后,发现翻译第二章的速 ...
- 《Django By Example》第一章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:本人目前在杭州某家互联网公司工作, ...
随机推荐
- advisor调优工具优化sql(基于sql_id)
advisor调优工具优化sql(基于sql_id) 问题背景:客户反馈数据库迁移后cpu负载激增,帮忙查看原因 解决思路:1> 查看问题系统发现有大量的latch: cache buffers ...
- opencv::处理边缘
卷积边界问题 图像卷积的时候边界像素,不能被卷积操作,原因在于边界像素没有完全跟kernel重叠,所以当3x3滤波时候有1个像素的边缘没有被处理,5x5滤波的时候有2个像素的边缘没有被处理. 处理边缘 ...
- 通过一个生活中的案例场景,揭开并发包底层AQS的神秘面纱
本文导读 生活中案例场景介绍 联想到 AQS 到底是什么 AQS 的设计初衷 揭秘 AQS 底层实现 最后的总结 当你在学习某一个技能的时候,是否曾有过这样的感觉,就是同一个技能点学完了之后,过了一段 ...
- MySQL GROUP_CONCAT()函数 -- 字段合并查询
在做查询的时候遇到一个问题,今天分享一下解决方法. 先看一下我想要什么效果. 清单名称类型要点,后面两列为清单步骤(外键表) 但我并不想让主表的内容重复那么多遍,于是 distinct去重.子查询.左 ...
- MyBatis(4)-- 动态SQL
如果使用JDBC或者类似于Hibernate的其他框架,很多时候要根据需要去拼装SQL,这是一个麻烦的事情.因为某些查询需要许多条件.通常使用其他框架需要大量的Java代码进行判断,可读性比较差,而M ...
- 设计模式(二十二)Command模式
一个类在进行工作时会调用自己或者是其他类的方法,虽然调用结果会反映在对象的状态中,但并不会留下工作的历史记录. 这时,如果我们有一个类,用来表示“请进行这项工作”的“命令”就会方便很多.每一项想做的工 ...
- unity单例封装
# 1.前言本篇主要针对Unity单例模式,完成一个可以重复继承使用的抽象类,减少重复的工作与代码.同时,对存在的多种单例进行优劣分析.# 2.Unity单例问题分析## 2.1 单例原则单例要满足以 ...
- python 线程、进程与协程
一.什么是线程?什么是进程? 第一,进程是一个实体.每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region).数据区域(data region)和堆栈(stack regio ...
- Golang 实现华为云 DMS 签名
构造请求 首先构造请求,也就是要对哪个具体接口进行访问,需要提供什么必要的参数.在构造请求(点击查看中可以看到,对 DMS 服务来说必要的请求构成包括以下部分 请求URI,例如 https://dms ...
- Linux 命令之 crontab
crontab 简介 crontab 主要用于需要管理周期执行定时任务的场景 crontab 安装 (有些系统默认已经带了 crontab,无需安装的朋友可以直接跳过本节) 安装: yum insta ...