django1.6 博客的快速搭建first blog

一:系统环境

[root@centosTest mysitesec]# python --version
Python 2.7.3
[root@centosTest mysitesec]# lsb_release -a
LSB Version:    :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: CentOS
Description:    CentOS release 6.4 (Final)
Release:        6.4
Codename:       Final
[root@centosTest mysitesec]# 

django1.6.2

二:项目创建

django-admin.py startproject mysitesec

项目结构:

三:进入目录,运行服务

[root@centosTest django]# cd mysitesec/
[root@centosTest mysitesec]# ll
总用量 8
-rw-r--r--. 1 root root  252 11月  5 04:23 manage.py
drwxr-xr-x. 2 root root 4096 11月  5 04:26 mysitesec
[root@centosTest mysitesec]# python manage.py runserver
Validating models...

0 errors found
November 04, 2014 - 20:51:46
Django version 1.6.2, using settings 'mysitesec.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.


四:创建blog应用


[root@centosTest mysitesec]# python manage.py startapp blog
[root@centosTest mysitesec]# ll
总用量 12
drwxr-xr-x. 2 root root 4096 11月  5 04:59 blog
-rw-r--r--. 1 root root  252 11月  5 04:23 manage.py
drwxr-xr-x. 2 root root 4096 11月  5 04:54 mysitesec
[root@centosTest mysitesec]# pwd
/data/download/django/mysitesec
[root@centosTest mysitesec]# 


--待续
2014-11-06续:

五:创建model并同步数据库

现在我们打开blog目录下的models.py文件,这是我们定义blog数据结构的地方。
from django.db import models

# Create your models here.
class BlogsPost(models.Model):
    title = models.CharField(max_length = 150)
    body = models.TextField()
    timestamp = models.DateTimeField()

同步数据库却报错如下:
.......
.......
django.db.utils.OperationalError: near "��N": syntax error

解决不了之后在另一台机器上重复上述步骤成功

同步数据库

[root@localhost mysite16_2]# python manage.py syncdb
Creating tables ...
Creating table django_admin_log
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_groups
Creating table auth_user_user_permissions
Creating table auth_user
Creating table django_content_type
Creating table django_session

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'root'): root
Email address: pianzif@126.com
Password: 
Password (again): 
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)
[root@localhost mysite16_2]# 


六 :设置admin应用

vi settings.py
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
)

vi urls.py
[root@localhost mysite16_2]# more mysite16_2/urls.py
from django.conf.urls import patterns, include, url

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'mysite16_2.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),

    url(r'^admin/', include(admin.site.urls)),
)

创建数据到后台
[root@localhost mysite16_2]# vi blog/models.py

from django.db import models
from django.contrib import admin

# Create your models here.
class BlogsPost(models.Model):
    title = models.CharField(max_length = 150)
    body = models.TextField()
    timestamp = models.DateTimeField()

admin.site.register(BlogsPost)
再次同步数据库
[root@localhost mysite16_2]# python manage.py syncdb
Creating tables ...
Creating table blog_blogspost
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)
[root@localhost mysite16_2]# 

启动服务登录admin
root 123456
python mange.py runserver



add一个博客



编辑让他显示正确的标题

[root@localhost mysite16_2]# vi blog/models.py

from django.db import models
from django.contrib import admin

# Create your models here.
class BlogsPost(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(BlogsPost,BlogPostAdmin)


七:创建blog的公共部分

从Django的角度看,一个页面具有三个典型的组件:
一个模板(template):模板负责把传递进来的信息显示出来。
一个视图(viw):视图负责从数据库获取需要显示的信息。
一个URL模式:它负责把收到的请求和你的试图函数匹配,有时候也会向视
图传递一些参数。

7.1:创建模版页面让他在前台显示

查看表

[root@localhost mysite16_2]# sqlite3 db.sqlite3 
SQLite version 3.6.20
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
auth_group                  auth_user_user_permissions
auth_group_permissions      blog_blogspost            
auth_permission             django_admin_log          
auth_user                   django_content_type       
auth_user_groups            django_session            
sqlite> select * from blog_blogspost;
1|wenchao first blog|this is my first blog|2014-11-07 11:32:34
2|second blog|this is my second blog|2014-11-07 11:36:01
sqlite> 

常见模版目录及模版文件

[root@localhost blog]# cd templates/
[root@localhost templates]# ll
total 4
-rw-r--r--. 1 root root 114 Nov  7 11:50 archive.html
[root@localhost templates]# more archive.html 
{% for post in posts %}
<h2>{{ post.title }}</h2>
<p>{{ post.timestamp }}</p>
<p>{{ post.body }}</p>
{% endfor %}
[root@localhost templates]# pwd
/root/Desktop/data/download/django/mysite16_2/blog/templates
[root@localhost templates]# 

注册模版文件

在settings.py中增加

TEMPLATE_DIRS = (
'/root/Desktop/data/download/django/mysite16_2/blog/templates'
,
)

7.2:创建视图函数

[root@localhost mysite16_2]# cd ../blog/
[root@localhost blog]# more views.py
from django.shortcuts import render
from django.template import loader,Context
from django.http import HttpResponse
from blog.models import BlogsPost


# Create your views here.
def archive(request):
    posts = BlogsPost.objects.all()
    t = loader.get_template("archive.html")
    c = Context({'posts':posts})
    return HttpResponse(t.render(c))
[root@localhost blog]#   pwd
/root/Desktop/data/download/django/mysite16_2/blog
[root@localhost blog]# 

posts = BlogPost.objects.all() :获取数据库里面所拥有BlogPost对象
t = loader.get_template("archive.html"):加载模板
c = Context({'posts':posts}):模板的渲染的数据是有一个字典类的对象Conte
xt提供,这里的是一对键值对。


7.3:创建url模式

增加blog的url

[root@localhost mysite16_2]# more urls.py
from django.conf.urls import patterns, include, url

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'mysite16_2.views.home', name='home'),
    url(r'^blog/', include('blog.urls')),

    url(r'^admin/', include(admin.site.urls)),

)
[root@localhost mysite16_2]# pwd
/root/Desktop/data/download/django/mysite16_2/mysite16_2
[root@localhost mysite16_2]# 


在blog应用中创建blog文件

[root@localhost blog]# more urls.py
from django.conf.urls import *
from blog.views import archive
urlpatterns = patterns('',
                       url(r'^$',archive),
                      )
[root@localhost blog]# pwd
/root/Desktop/data/download/django/mysite16_2/blog
[root@localhost blog]# 

之所以在blog应用下面又创建urls.py文件,是为了降低耦合度。这样mysite/
urls.py文件针对的是每个项目的url。


八:启动服务看前台显示的效果


应该是python路径找不到的问题

我的解决方法如下

[root@localhost blog]# cd /usr/lib/python2.6/site-packages/
[root@localhost site-packages]# ll *pth
-rw-r--r--. 1 root root 30 Feb 23  2013 abrt.pth
-rw-r--r--. 1 root root 47 Nov  7 12:45 path.pth
[root@localhost site-packages]# more path.pth 
/root/Desktop/data/download/django/mysite16_2/
[root@localhost site-packages]# echo $PYTHONPATH

[root@localhost site-packages]# python
Python 2.6.6 (r266:84292, Feb 22 2013, 00:00:18) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/usr/lib64/python26.zip', '/usr/lib64/python2.6', '/usr/lib64/python2.6/plat-linux2', '/usr/lib64/python2.6/lib-tk', '/usr/lib64/python2.6/lib-old', '/usr/lib64/python2.6/lib-dynload', '/usr/lib64/python2.6/site-packages', '/usr/lib64/python2.6/site-packages/gst-0.10', '/usr/lib64/python2.6/site-packages/gtk-2.0', '/usr/lib64/python2.6/site-packages/webkit-1.0', '/usr/lib/python2.6/site-packages', '/root/Desktop/data/download/django/mysite16_2']
>>> 
KeyboardInterrupt
>>> 
[root@localhost site-packages]# pwd
/usr/lib/python2.6/site-packages
[root@localhost site-packages]# 
更多方法详见:http://blog.sina.com.cn/s/blog_66fce99f0101e71c.html




九:样式修改

创建基础模版

[root@localhost templates]# more 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;margin-top:2em}
p{margin:1em 0}
</style>
<body>
<h1>fuwenchao first blog</h1>
<h3>hehe</h3>
{% block content %}
{% endblock %}
</body>
</html>
[root@localhost templates]# 


修改模版引用基础模版
[root@localhost templates]# more 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 %}
[root@localhost templates]# 

测试:





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要用Django快速搭建博客系统,可以按照以下步骤进行: 1. 安装Django 首先需要安装Django,可以使用pip命令进行安装: ``` pip install django ``` 2. 创建Django项目和应用 使用以下命令创建一个Django项目和一个应用: ``` django-admin startproject myblog cd myblog python manage.py startapp blog ``` 这里的myblog是项目名称,blog是应用名称。 3. 配置数据库 在myblog/settings.py文件中配置数据库信息,这里使用SQLite数据库: ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } ``` 4. 创建博客模型 在blog/models.py文件中定义博客的模型: ```python from django.db import models class Blog(models.Model): title = models.CharField(max_length=100) content = models.TextField() pub_date = models.DateTimeField(auto_now_add=True) ``` 这里定义了一个博客模型,包括标题、内容和发布时间。 5. 创建数据库表 使用以下命令创建数据库表: ``` python manage.py makemigrations python manage.py migrate ``` 6. 创建视图 在blog/views.py文件中定义博客列表视图和详情视图: ```python from django.shortcuts import render, get_object_or_404 from .models import Blog def blog_list(request): blogs = Blog.objects.all() return render(request, 'blog_list.html', {'blogs': blogs}) def blog_detail(request, pk): blog = get_object_or_404(Blog, pk=pk) return render(request, 'blog_detail.html', {'blog': blog}) ``` 这里定义了博客列表视图和详情视图,通过模板渲染展示博客信息。 7. 创建模板 在blog/templates目录下创建博客列表和详情的模板: blog_list.html: ```html {% for blog in blogs %} <h2><a href="{% url 'blog_detail' blog.pk %}">{{ blog.title }}</a></h2> <p>{{ blog.content }}</p> <p>{{ blog.pub_date }}</p> {% endfor %} ``` blog_detail.html: ```html <h2>{{ blog.title }}</h2> <p>{{ blog.content }}</p> <p>{{ blog.pub_date }}</p> ``` 8. 配置URL 在myblog/urls.py文件中配置博客列表和详情的URL: ```python from django.urls import path from blog.views import blog_list, blog_detail urlpatterns = [ path('', blog_list, name='blog_list'), path('<int:pk>/', blog_detail, name='blog_detail'), ] ``` 9. 运行Django项目 使用以下命令运行Django项目: ``` python manage.py runserver ``` 然后在浏览器中访问http://127.0.0.1:8000/就可以看到博客列表页面了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值