Django架设blog步骤(转)
最近在研究Python,起初是因为想做个爬虫,昨天看了点基础教程,台湾辅仁大学的视频,了解了python的语法规范及语言特性,主要有三:
1.动态脚本语言;
2.语法简洁,强制缩进;
3.应用广泛,web、系统管理、脚本、科学计算等等,第三方应用多;
下面开始正文,Django是Python时间中数一数二的web框架,由3个小伙创建,名字来源于一个吉他手(看3人的照片,叛逆青年类型,取这个名也就不奇怪了)。
Django的最大优点就是可以快速建立一个web应用,语法简洁,及其轻量,甚至内含一个web容器;也是基于MVC理念,更准确的说法是MTC。
以下是今天使用Django建立一个blog应用的步骤,走了一点弯路,记录下来备查:
(一)安装
1.安装Python
官网下载windows安装板,3.4.3;安装到D:\Python34
2.安装Django
官网下载1.8.7,zip包,解压到D:\Python34\Django-1.8.4
cd D:\Python34\Django-1.8.4
python setup.py install
自动安装到D:\Python34\Lib\site-packages\Django-1.8.4-py3.4.egg\django
3.创建一个项目
在D:\Python34\Lib\site-packages\Django-1.8.4-py3.4.egg\django\bin目录下,执行 Python-admin.py startproject mysite1 (如果事mac osx,则应为django-admin)
执行完后,自动生成一个mysite1目录,其下有mysite1目录和manage.py文件。
4.启动服务器
manage.py runserver
启动浏览器,检验一下,访问 http://localhost:80000,正常。
5.建立blog应用
manage.py startapp blog
命令执行后,在D:\Python34\Lib\site-packages\Django-1.8.4-py3.4.egg\django\mysite1\ 下生成一个blog文件夹
(1)编辑model
其下的models.py是定义blog数据结构的地方,打开编辑

1 from django.db import models
2 from django.contrib import admin
3
4 # Create your models here.
5
6 class BlogPost(models.Model):
7 title = models.CharField(max_length=150)
8 body = models.TextField()
9 timestamp = models.DateTimeField()
10 # def __init__(self, arg):
11 # super(BlogPost, self).__init__()
12 # self.arg = arg
13
14 admin.site.register(BlogPost)

title、body、timestamp是Blog的主体,类似于java中的hibernate,ORM。
最后一行是想admin模块注册,暂时可无视。
(2)安装模块
blog模块需要让mysite1项目知晓,编辑在D:\Python34\Lib\site-packages\Django-1.8.4-py3.4.egg\django\mysite1\mysite1\setting.py文件

1 # Application definition
2
3 INSTALLED_APPS = (
4 'django.contrib.admin',
5 'django.contrib.auth',
6 'django.contrib.contenttypes',
7 'django.contrib.sessions',
8 'django.contrib.messages',
9 'django.contrib.staticfiles',
10 'blog',
11 )

第10行为新加
(3)同步数据
新加了blog模块,并定义了model,需要同步一下数据
执行 manage.py syncdb
提示

Operations to perform:
Synchronize unmigrated apps: messages, staticfiles
Apply all migrations: admin, sessions, contenttypes, auth
Synchronizing apps without migrations:
Creating tables...
Running deferred SQL...
Installing custom SQL...
Running migrations:
No migrations to apply.
Your models have changes that are not yet reflected in a migration, and so won
't be applied.
Run 'manage.py makemigrations' to make new migrations, and then re-run 'manage
.py migrate' to apply them.

按照最后一行提示,执行 manage.py makemigrations,执行manage.py,生成blog_blogpost数据表。否则会提示 no such table: blog_blogpost 等。
Django支持多种数据库,SQLlite,mysql,MySQL,PostgreSQL,Oracle,MSSQL等,默认为SQLlite,可以看到项目目录下又有个db.sqllite3,就是默认数据库;
如果要使用mysql等可以设置D:\Python34\Lib\site-packages\Django-1.8.4-py3.4.egg\django\mysite1\mysite1\setting.py文件

2 'default': {
3 'ENGINE': 'django.db.backends.mysql',
4 'NAME': 'blog',
5 'USER':'root',
6 'PASSWORD':'123456',
7 'HOST':'',
8 'PORT':'',
9 }

(6)设置url
编辑在D:\Python34\Lib\site-packages\Django-1.8.4-py3.4.egg\django\mysite1\mysite1\url.py文件,自带的如下,不知道为什么不好使

from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^blog/',include(blog.urls)),
]

百度后,替换为;

from django.conf.urls import patterns, include, url
#from django.contrib import admin
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'mysite.views.home', name='home'),
# url(r'^mysite/', include('mysite.foo.urls')),
# Uncomment the admin/doc line below to enable admin documentation:
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
url(r'^admin/', include(admin.site.urls)),
)

重新启动服务器,访问http://localhost:8000/admin,出现如下界面,
点击blogpost后的+号,提示如下页面,如果不改上面的setting文件报错 ;如 No module named 'blog.urls'等。
(7)完善一下
显示blog的题目和提交时间
编辑D:\Python34\Lib\site-packages\Django-1.8.4-py3.4.egg\django\mysite1\blog\model.py

1 from django.db import models
2 from django.contrib import admin
3
4 # Create your models here.
5
6 class BlogPost(models.Model):
7 title = models.CharField(max_length=150)
8 body = models.TextField()
9 timestamp = models.DateTimeField()
10 # def __init__(self, arg):
11 # super(BlogPost, self).__init__()
12 # self.arg = arg
13 class BlogPostAdmin(admin.ModelAdmin):
14 list_display = ('title','timestamp')
15 admin.site.register(BlogPost,BlogPostAdmin)
16

最后几行为新加。
(8)blog前端页面
从Django的角度看,一个页面具有三个典型的组件:
一个模板(template):模板负责把传递进来的信息显示出来。
一个视图(viw):视图负责从数据库获取需要显示的信息。
一个URL模式:它负责把收到的请求和你的试图函数匹配,有时候也会向视图传递一些参数。
1.创建模板
在blog目录下建立template目录(mysite/blog/templates),创建模板文件archive.html,它的内容如下:
{% for post in posts %}
<h2>{{ post.title }}</h2>
<p>{{ post.timestamp }}</p>
<p>{{ post.body }}</p>
{% endfor%}
2.创建一个视图函数
在app应用的目录下的view.py添加视图函数

from django.shortcuts import render
from django.template import loader,Context
from django.http import HttpResponse
from blog.models import BlogPost
# Create your views here.
def archive(request):
posts = BlogPost.objects.all()
t = loader.get_template("archive.html")
c = Context({'posts':posts})
return HttpResponse(t.render(c))

posts = BlogPost.objects.all() :获取数据库里面所拥有BlogPost对象
t = loader.get_template("archive.html"):加载模板
- c = Context({'posts':posts}):模板的渲染的数据是有一个字典类的对象Context提供,这里的是一对键值对
3.创建一个URL模式
第一步,编辑mysite1/urls.py
url(r'^blog/', include('blog.urls')),
此处一定要注意,include中需要单引号,否则报错。
第二步,创建并编辑mysite1/blog/urls.py
from django.conf.urls import *
from blog.views import archive
urlpatterns = patterns('',url(r'^$',archive),)
浏览器访问,看是否正常
4.前端页面润色
1,模板的精确定位
在mysite/blog/templates目录里创建一个叫base.html的模板

1 <html>
2 <style type="text/css">
3 body{color:#efd;background:#453;padding:0 5em;margin:0}
4 h1{padding:2em 1em;background:#675}
5 h2{color:#bf8;border-top:1px dotted #fff;margin-top:2em}
6 p{margin:1em 0}
7 </style>
8
9 <body>
10 <h1>my blog</h1>
11 {% block content %}
12 {% endblock %}
13 </body>
14 </html>

2,修改archive.html模板,让它引用base.html模板和它的“content”块。

{% extends "base.html" %}
{% block content %}
{% for post in posts %}
<h2>{{ post.title }}</h2>
<p>{{ post.timestamp | date:"1,F jS"}}</p>
<p>{{ post.body }}</p>
{% endfor %}
{% endblock %}

刷新浏览器可以看到效果如下:
[T5JMEK.png)
[T5JMEK.png)

Django架设blog步骤(转)的更多相关文章
- Django架设blog步骤
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- 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虚拟环境完整步骤
一.建立虚拟环境 pip install virtualenv 要使用Django,首先要建立一个虚拟工作环境.我们先为项目建立一个文件夹learn,在文件夹中打开命令行(shift+右击),来建立另 ...
- python+django+mysql配置步骤
安装python 详细步骤见:地址 1. 从 http://www.python.org/download/ 下载最新的python版本 (我用的是python2.6, 当时最稳定的) 2. 然后一路 ...
- django demo --blog
详情,请看虫师博客http://www.cnblogs.com/fnng/p/3737964.html 和https://my.oschina.net/matrixchan/blog/184445 ...
- 通过django 速成 blog
1. 创建项目 33进入在python目录下的scripts文件后执行 django-admin.py startproject mysite 这样就生成了名为mysite ...
- Django实现得步骤流程
我们利用django实现功能得时候,步骤和流程是怎样得呢? 一,首先要在Models中创建表. 1,在setting中找到DATABASE 中找到要使用得数据库,用mysql就把名字改了mysql. ...
- Django安装Xadmin步骤
在Django中安装Xadmin替换原始的admin,下面介绍两种方法安装 第一种方法:pip安装 第一步: 直接pip安装xadmin pip install xadmin pip会同时安装上面三个 ...
随机推荐
- linux开机启动服务和chkconfig使用方法(转)
每个被chkconfig 管理的服务需要在对应的/etc/rc.d/init.d 下的脚本加上两行或者更多行的注释. 第一行告诉 chkconfig 缺省启动的运行级以及启动和停止的优先级.如果某服务 ...
- cocos2d-x 3.0游戏实例学习笔记《卡牌塔防》第二步---编辑器(1)--触摸加入点
/* 说明: **1.本次游戏实例是<cocos2d-x游戏开发之旅>上的最后一个游戏,这里用3.0重写并做下笔记 **2.我也问过木头本人啦,他说:随便写,第一别全然照搬代码:第二能够说 ...
- malformed or corrupted AST file。。。module file out of date'
今天打开了曾经用的一个项目,(曾经的程序是对的)弹出了两个红框 malformed or corrupted AST file...module file out of date'. 这种结构. 解决 ...
- 【Unity Shaders】使用CgInclude让你的Shader模块化——Unity内置的CgInclude文件
本系列主要參考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同一时候会加上一点个人理解或拓展. 这里是本书全部的插图. 这里是本书所需的代码 ...
- Qt调用word 例子
Qt调用word 例子 Getting Microsoft Word Object to SaveAs #include <QtGui> #include <QAxObject> ...
- org.jsoup.select.Selector
org.jsoup.select.Selector CSS-like element selector, that finds elements matching a query. Selector ...
- JAVA命令参数详解
JAVA命令参数详解 JAVA命令详解 结构 说明 Java 和 OldJava JIT 选项 另请参阅 结构 java [ options ] class [ argument ... ] java ...
- angularjs入门学习【指令篇】
一.首先我们来了解下指令API 属性 含义 restrict 申明标识符在模版中作为元素,属性,类,凝视或组合,怎样使用 priority 设置模版中相对于其它标识符的运行顺序 Template 指定 ...
- [置顶] LLVM每日谈之十五 LLVM自带的examples
作者:snsn1984 在LLVM源码的目录下,有一个目录叫做examples,这个目录下边有几个LLVM的例子,初学者一般不会太关注这些例子,但是这些例子确实是精华中的精华,在LLVM的学习过程中不 ...
- AspNetPager分页实际应用
---恢复内容开始--- 首先,这个分页是快速开发的一种,弊端就是一次查询数据库全部,然后分页显示. 注意: 1,最好绑定的数据是一个list格式! 1首先打开 http://www.webdiyer ...