django 实例演示

来源:互联网 发布:如何成为域名注册商 编辑:程序博客网 时间:2024/06/11 19:50
1.创建一个 project
django-admin startproject mysite
2.在 mysite 下面创建一个 app
python manage.py startapp blog
注:Django 1.8.x 以上的,还有一个 migrations 文件夹。Django 1.9.x 还会在 Django 1.8 的基础上多出一个 apps.py 文件。但是这些都与本文无关。
3.初始化 admin 后台数据库
python manage.py migrate
4.设置 admin 应用,添加 blog 应用
INSTALLED_APPS = [    'django.contrib.admin',    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    'django.contrib.messages',    'django.contrib.staticfiles',    'blog',]
5.启动 admin 容器
python manage.py runserver 9999 &
6.访问 后台应用
http://127.0.0.1:9999/admin
此时用户名密码需要进行设置
7. 设计 Model 即设计数据库表
在 mysite/blog/models.py
from django.db import modelsfrom 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)
8.再次初始化数据库
python manage.py makemigrations blog
python manage.py migrate
9.再次启动容器,访问 Admin 后台,创建文章
10.设置 admin 的 BlogsPost 界面
打开 mysite/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)
创建BlogPostAdmin类,继承admin.ModelAdmin父类,以列表的形式显示BlogPost的标题和时间
11.创建 blog 公共部分

从Django的角度看,一个页面具有三个典型的组件:

一个模板(template):模板负责把传递进来的信息显示出来。

一个视图(view):视图负责从数据库获取需要显示的信息。

一个URL模式:它负责把收到的请求和你的试图函数匹配,有时候也会向视图传递一些参数。

1) 创建模板

创建 mysite/blog/templates/  在目录下创建 index.html

{% for post in blog_list %}
    <h2>{{ post.title }}</h2>
   <p>{{ post.timestamp }}</p>
   <p>{{ post.body }}</p>{% endfor%}
2)创建视图函数
打开 mysite/blog/views.py
#coding=utf-8from django.shortcuts import renderfrom blog.models import BlogsPostfrom django.shortcuts import render_to_response# Create your views here.def index(request):    blog_list = BlogsPost.objects.all()    return render_to_response('index.html',{'blog_list':blog_list})

blog_list = BlogPost.objects.all() :获取数据库里面所拥有BlogPost对象

render_to_response()返回一个页面(index.html),顺带把数据库中查询出来的所有博客内容(blog_list)也一并返回

3)创建 blog 的 URL 模式
在 mysite/urls.py 文件里添加 blog 的 url:
Django 1.7 以下:
from django.conf.urls import urlfrom django.contrib import adminurlpatterns = [    url(r'^admin/', admin.site.urls),url(r'^blog/', blog.views.index),]
Django 1.8 以上:先导入,再使用
from django.conf.urls import urlfrom django.contrib import adminfrom blog import views as blog_viewsurlpatterns = [    url(r'^admin/', admin.site.urls),url(r'^blog/', blog_views.index),]
4)再次启动服务 python manage.py runserver 9999 & 
访问 http://127.0.0.1:9999/blog/
5)添加样式
在 mysite/blog/templates 目录下创建 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>blog 样式演示</h1> {% block content %} {% endblock %} </body>
</html>
修改 index.html 模板,引用 base.html 模板和 content 块
{% extends "base.html" %}  {% block content %}      {% for post in blog_list %}      <h2>{{  post.title }}</h2>      <p>{{ post.timestamp | date:"1,F jS"}}</p>      <p>{{ post.body }}</p>      {% endfor %}  {% endblock %}
0 0