Django学习笔记--第一天--搭建一个简易博客

前言:最近准备写一个自己的个人博客。本来想用.net开发的,由于VS有点装不上,最近学习Python。选择了python的web框架Django。
开发环境:Ubuntu 14.04
开发工具:Pychram 2016.1.0 社区版
Python版本:2.7.6
Django版本:1.9.6
<参考资料>—前人文章:http://my.oschina.net/jastme/blog/345265
下面开始:
1.工具安装:
python已经自带;打开Pychram
File–>settings–>Project **–>Project Interpreter
点击绿色的+号,搜索Django -->选择 Install Package即可安装完成.
Django学习笔记--第一天--搭建一个简易博客_第1张图片

输入:import django
验证是否安装成功。如果没有报错,表示成功。
Django学习笔记--第一天--搭建一个简易博客_第2张图片

2.创建工程
PS:路径最好不要包含中文,否则会报错
打开终端输入:

django-admin.py startproject mysite
cd mysite
python manage.py startapp blog
django-admin.py startproject mysite

新建了许多工程文件:

  • manage.py ----- Django项目里面的工具,通过它可以调用django shell和数据库等。

  • settings.py ---- 包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量。

  • urls.py ----- 负责把URL模式映射到应用程序。

 python manage.py startapp blog

创建了Blog应用
用Pychram打开工程:可以看到下面的文件结构:
Django学习笔记--第一天--搭建一个简易博客_第3张图片

然后在/mysite/mysite/settings.py里面的

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

添加’blog’,

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
]

表示添加一个blog app

3.数据库创建
django使用代码的方式创建数据库。
首先修改mysite/blog/models.py 继承默认的数据库类,创建数据库

from __future__ import unicode_literals
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()

BlogPost类是django.db.models.Model的一个子类 。它有变量title(blog的标题),body(blog的内容部分),timestamp(blog的发表时间)

这里只是设计了数据库,并没有创建数据库。
Dajango支持主流的数据库服务器(MySQL,PostgreSQL,Oracle和MSSQL),但本项目使用SQLite,这里之需要通过一条简单的命令可以创建SQLite数据库。需要修改在settings里面,默认为sqlite3

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }

创建数据库:
切换到含有manage.py的目录下:

python manage.py makemigrations 
python manage.py migrate

Django学习笔记--第一天--搭建一个简易博客_第4张图片

4.后台管理
django默认开启了admin的后台:

urlpatterns = [
    url(r'^admin/', admin.site.urls),
]

终端输入:python manage.py runserver开启服务(再价一个参数可以设置端口号)
访问 http://127.0.0.1:8000/admin 访问后台
Django学习笔记--第一天--搭建一个简易博客_第5张图片
需要管理员密码账号:
终端输入:

python manage.py createsuperuser

根据提示创建即可。
五.修改数据库内容,添加其他项。
在最后添加一行代码:

admin.site.register(BlogPost)

前面添加:

from django.contrib import admin

这样就多了一个BlogPost的项了
Django学习笔记--第一天--搭建一个简易博客_第6张图片
Add–>添加文章,就能开始写文章了。

然后再对后台界面做个优化,让文章的标题时间显示出来‘
修改blog应用的models.py,为它添加一个admin.ModelAdmin的子类BlogPostAdmin.以列表形式显示BlogPost的标题和时间。
完整代码

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)

六.把后台博客优雅的显示到前台去
blog下面新建一个templates文件夹,这里可以放置各种资源,会默认找到这里。
在templates下新建一个模板页面。muban.html


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>我的博客title>
head>
<body>
{% for post in posts %}
<h2>{{ post.title }}h2>
<p>{{ post.timestamp }}p>
<p>{{ post.body }}p>
{% endfor%}
body>
html>

其中{{ }}里面包含的是要显示的变量,使用一个for循环把文章全部显示在页面上。

视图blog/views里面包含要显示的页面方式。
在这里调用模板并且传入参数:

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 muban(request):
    posts = BlogPost.objects.all()
    t = loader.get_template("muban.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提供,这里的是一对键值对。

现在还是不能显示博客页面,因为请求首先是在mysite/urls里面处理的,
所以要添加一个url到blog的views里面去。

from django.conf.urls import url
from django.contrib import admin
from blog import views as blog_views  # new

urlpatterns = [
    url(r'^blog', blog_views.muban, name='muban'),  # new
    url(r'^admin/', admin.site.urls),
]

打开服务,访问http://127.0.0.1:8000/blog/
Django学习笔记--第一天--搭建一个简易博客_第7张图片

七.美化界面
mysite/blog/templates目录里创建一个叫base.html的模板




    
    Title



my blog

{% block content %} {% endblock %}

继承模板:
muban.html




    
    


{% extends "base.html" %}
  {% block content %}
  {% for post in posts %}
  

{{ post.title }}

{{ post.timestamp | date:"1,F jS"}}

{{ post.body }}

{% endfor %} {% endblock %}

按日期排序

修改blog 应用下的models.py,为BlogPost添加一个Meta嵌套类。如下:

class BlogPost(models.Model): 
  title = models.CharField(max_length = 150)    
  body = models.TextField()    
  timestamp = models.DateTimeField()    
  class Meta:        
    ordering = ('-timestamp',)

刷新浏览器:
Django学习笔记--第一天--搭建一个简易博客_第8张图片

你可能感兴趣的:(旧文归档)