高速搭建轻巧的Blog,Django基础流程

By admin in 美高梅手机版4858 on 2019年5月3日

软件条件

  Django 自称是“最契合开辟有限时的应有尽有WEB框架”。本文参考《Django
web开垦指南》,快捷搭建二个blog
出来,在中间涉及大多知识点,这里不会详细表明,假设您是首先次接触Django
,本文仲让你在感性上对Django有个认识,完花费文操作后会让您有意思味阅读的相关书籍和文书档案。

一,创设项目

近日在商量Python,初叶是因为想做个爬虫,前几日看了点基础教程,西藏辅仁大学的录像,了然了python的语法标准及言语特色,首要有叁:

Pycharm
2018.1

废话少说,come on!!

1, 为blog创制名称叫mysite的工程项目:

1.动态脚本语言;

Python
3.6

本操作的条件:

 django-admin.py startproject mysite

贰.语法简洁,强制缩进;

Django
2.0.3

===================

2, 项目结构如下:

三.用到遍布,web、系统一管理理、脚本、科学总计等等,第壹方应用多;

 

Windows 7/10

  mysite
    ├── manage.py
    └── mysite
        ├── __init__.py
        ├── settings.py
        ├── urls.py
        └── wsgi.py

 

一、新建项目

python 2.7

  • manage.py —– Django项目里面的工具,通过它能够调用django
    shell和数据库等。

  • settings.py —-
    蕴含了品种的默许设置,包涵数据库新闻,调节和测试志以及其余部分专门的学问的变量。

  • urls.py —– 肩负把U揽胜L格局射到应用程序。

上面起始正文,Django是Python时间中拔尖的web框架,由三个青年创制,名字来自2个吉他手(看三位的相片,叛逆青年类型,取那几个名也就不意外了)。

直白动用Pycharm的菜单来创制项目,命名叫mysite。

Django 1.8.2

贰 ,运营开荒服务器

Django的最大优点正是能够飞快建设构造2个web应用,语法简洁,及其轻量,以至内含2个web容器;也是基于MVC观念,修正确的说教是MTC。

mysite

  mysite

    __init__.py

    settings.py

    urls.py

    wsgi.py

  templates

  manage.py

===================

要立刻查看django项目采纳的周转,可以选用Django项目里的mange.py

以下是明天使用Django创立2个blog应用的手续,走了几许弯路,记录下来备查:

 

 

切换来工程目录,实践运转服务器命令:

(一)安装

二、新建应用

 

python manage.py runserver

1.安装Python

选取Pycharm的tools菜单下的Run manage.py
Task,在弹出的窗口中输入以下命令:


创设工程                                                                                                         

完成:

官方网站下载windows安装板,三.四.三;安装到D:\Python34

startapp
blog

 

美高梅手机版4858 1

2.安装Django

blog

  migrations

  __init__.py

  admin.py

  apps.py

  models.py

  tests.py

  views.py

开创mysite工程项目:

展开浏览器,输入访问地址:12七.0.0.1:8000

官方网址下载一.八.七,zip包,解压到D:\Python34\Django-1.8.4

 

D:/djpy> django-admin.py startproject mysite

美高梅手机版4858 2

cd D:\Python34\Django-1.8.4

三、将blog应用加到setting.py文件中的INSTALLED_APPS中

工程目录结构:

三,创建Blog应用

python setup.py install

INSTALLED_APPS = [

  'blog',

]

美高梅手机版4858 3

python manage.py startapp blog

自行安装到D:\Python34\Lib\site-packages\Django-1.8.4-py3.4.egg\django

 

manage.py —– Django项目里面包车型大巴工具,通过它能够调用django
shell和数据库等。

blog应用文本结构如下:

三.开立2个连串

四、编写第二个Model

settings.py —-
蕴涵了等级次序的私下认可设置,包含数据库新闻,调试标记以及其它部分职业的变量。

├── blog
│   ├── admin.py
│   ├── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py

在D:\Python34\Lib\site-packages\Django-1.8.4-py3.4.egg\高速搭建轻巧的Blog,Django基础流程。django\bin目录下,执行
Python-admin.py startproject mysite1   (如果事mac
osx,则应为django-admin)

编辑blog下的models.py文件,输入:

urls.py —– 担负把U本田CR-VL形式映射到应用程序。

四,设计的Model

施行完后,自动生成1个mysite一目录,其下有mysite1目录和manage.py文件。

from django.db import models


class BlogPost(models.Model):
    title = models.CharField(max_length=150)
    body = models.TextField()
    timestamp = models.DateTimeField()

    class Meta:
        ordering = ['-timestamp']

 

在blog目录下的models.py是blog应用的心文件之1,是定义blog数据结构的地方。

四.起步服务器

 

 

用编辑器张开models.py

manage.py runserver

5、设置数据库

创建blog应用                                                                                                  

新添BlogPost类,代如下:

起步浏览器,核准一下,访问

一般选择私下认可的sqlite就可以,也能够选拔mysql。在settings.py中安装。

 

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()

5.建立blog应用

 

在mysite目录下开创blog应用

BlogPost类是django.db.models.Model的2个子类
。它有变量title(blog的题),body(blog的剧情部分),timestamp(blog的刊马上间)。

manage.py startapp blog

6、创建表

D:/pydj> cd mysite

D:/djpy/mysite$ python manage.py startapp blog

五,设置数据库

一声令下实施后,在D:\Python34\Lib\site-packages\Django-1.8.4-py3.4.egg\django\mysite1\
下生成二个blog文件夹

在Run manage.py
Task中分头实践:

目录结构:

Dajango帮衬主流的数据库服务器(MySQL,PostgreSQL,Oracle和MSSQL),但本项目应用SQLite,这里之供给经过一条轻巧的吩咐能够创制SQLite数据库。

(1)编辑model

makemigrations

美高梅手机版4858 4

开创数据库:

其下的models.py是定义blog数据结构的地点,展开编辑

migrate

 

切换来工程主目录mysite/下,实行如下命令:

美高梅手机版4858 5

能够见到表被生成了。

 

python manage.py syncdb<br>
 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)

 

发轫化admin后台数据库                                                                                               

并发上面包车型客车唤醒,输入yes,然后根据提醒输入相关的音讯。达成后会生成3个数据库文件db.sqlite三

美高梅手机版4858 6

7、创建一流用户(用于登陆admin平台)

 

美高梅手机版4858 7

title、body、timestamp是Blog的主体,类似于java中的hibernate,ORM。

在Run manage.py
Task中施行如下命令:

  python
自带SQLite数据库,Django援助各样主流的数据库,这里为了便于推荐应用SQLite,要是应用任何数据库请在settings.py文件中设置。

6,设置自动admin应用

提及底一行是想admin模块注册,一时半刻可无视。

createsuperuser

切换来mysite创制数据库:

一,张开mysite/mysite/urls.py,打消注释url(r’^admin/’,
include(admin.site.urls))

(贰)安装模块

逐条输入用户名,邮箱,密码就能够。

美高梅手机版4858 8😉

2,编辑mysite/mysite/settings.py,在INSTALLED_APPS里面添blog应用。

blog模块必要让mysite一项目知晓,编辑在D:\Python34\Lib\site-packages\Django-1.8.4-py3.4.egg\django\mysite1\mysite1\setting.py文件

 

D:/djpy/mysite$ python manage.py syncdb

添后的代如下:

美高梅手机版4858 9

8、注册BlogPost应用

C:\Python27\lib\site-packages\django\core\management\commands\syncdb.py:24:
RemovedInDjango19Warning: The syncdb command will be removed in Django
1.9   warnings.warn(“The syncdb command
will be removed in Django 1.9”, RemovedInDjango19Warning)

# Application definition INSTALLED_APPS = (    'django.contrib.admin',    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    'django.contrib.messages',    'django.contrib.staticfiles',    'blog', )<br>
 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 )

为了在admin管理平台上一贯助长、删除小说,我们须要编写制定admin.py文件:

Operations to perform:   Synchronize unmigrated apps: staticfiles,
messages   Apply all migrations: admin,
contenttypes, auth, sessions Synchronizing apps without migrations:   Creating tables…     Running deferred SQL…   Installing custom SQL… Running migrations:   Rendering model states… DONE   Applying contenttypes.0001_initial… OK
  Applying auth.0001_initial… OK   Applying admin.0001_initial… OK   Applying
contenttypes.0002_remove_content_type_name… OK   Applying
auth.0002_alter_permission_name_max_length… OK   Applying
auth.0003_alter_user_email_max_length… OK   Applying
auth.0004_alter_user_username_opts… OK   Applying
auth.0005_alter_user_last_login_null… OK   Applying
auth.0006_require_contenttypes_0002… OK   Applying sessions.0001_initial…
OK

2,修改mysite/blog/models.py

美高梅手机版4858 10

from django.contrib import admin

from blog.models import BlogPost


class BlogPostAdmin(admin.ModelAdmin):
    list_display = ['title', 'timestamp']

admin.site.register(BlogPost, BlogPostAdmin)

You have installed Django’s auth system,
and don’t have any superusers defined. Would you like to create one now? (yes/no): yes
Username (leave blank to use ‘fnngj’):   
用户名(默许当前系统用户名) Email
address: fnngj@1贰陆.com     邮箱地址 Password:     密码 Password (again):    重复密码 Superuser created
successfully.

在结尾添一行代:

第九行事新加

 

美高梅手机版4858 11😉

admin.site.register(BlogPost)<br>

(3)同步数据

9、启动web服务器

 

models.py完整的代如下:

新加了blog模块,并定义了model,供给共同一下数量

访问

 

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()

admin.site.register(BlogPost)

执行 manage.py syncdb

输入用户名密码就能够。

设置admin应用                                                                                   

三,展开浏览器,输入http://12七.0.0.一:七千/admin/,输入刚才创立数据库时候填写的帐号就能够跻身admin分界面。

提示

 

  

美高梅手机版4858 12

美高梅手机版4858 13

十、创造博客的来得页面

  admin 是Django 自带的三个后台管理种类。

美高梅手机版4858 14

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.

在blog目录下新建templates目录,然后在templates目录下新建archive.html文件。

1、添加blog应用,打开mysite/mysite/settings.py 文件:

七,试用admin

美高梅手机版4858 15

{% for post in posts %}
    <h2>{{ post.title }}</h2>
    <p>{{ post.timestamp | date }}</p>
    <p>{{ post.body }}</p>
{% endfor %}

美高梅手机版4858 16😉

一, 点击Blog Posts右边的Add 按键,添三个帖子。

循途守辙最后一行提醒,推行 manage.py
makemigrations,试行manage.py,生成blog_blogpost数据表。否则会唤醒 no
such table: blog_blogpost 等。

 

# Application definition

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

美高梅手机版4858 17

Django帮助三种数据库,SQLlite,mysql,MySQL,PostgreSQL,Oracle,MSSQL等,默以为SQLlite,能够观察项目目录下又有个db.sqllite三,便是默许数据库;

11、创制视图函数

美高梅手机版4858 18😉

二,让admin的BlogPost分界面更神奇

要是要利用mysql等得以设置D:\Python34\Lib\site-packages\Django-1.8.4-py3.4.egg\django\mysite1\mysite1\setting.py文件

from django.template import loader
from django.http import HttpResponse
from blog.models import BlogPost


def archive(request):
    posts = BlogPost.objects.all()
    t = loader.get_template('archive.html')
    return HttpResponse(t.render({'posts': posts}))

在列表末尾,增加blog 应用

修改blog应用的models.py,为它添一个admin.ModelAdmin的子类BlogPostAdmin.以列表格局彰显BlogPost的题和岁月。

美高梅手机版4858 19

 

 

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)

 1 DATABASES = {
 2     ‘default’: {
 3         ‘ENGINE’: ‘django.db.backends.mysql’,
 4         ‘NAME’: ‘blog’,
 5         ‘USER’:’root’,
 6         ‘PASSWORD’:’123456′,
 7         ‘HOST’:”,
 8         ‘PORT’:”,
 9     }

12、配置URL路径

二、在大家创造django项目时,admin就早已创建,张开mysite/mysite/urls.py文件:

美高梅手机版4858 20

美高梅手机版4858 21

先修改总U智跑L文件:项目下的urls.py文件,与settings.py同级。

美高梅手机版4858 22😉

八,创设Blog的共用部分

(6)设置url

from django.contrib import admin
from django.urls import path, include

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

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

从Django的角度看,2个页面具备八个优良的机件:

编辑在D:\Python34\Lib\site-packages\Django-1.8.4-py3.4.egg\django\mysite1\mysite1\url.py文件,自带的如下,不知道怎么糟糕使

 

美高梅手机版4858 23😉

  • 一个模板(template):模板担任把递进来的新闻展现出来。

  • 贰个视图(viw):视图担负从数据库获取必要展示的信息。

  • 3个UXC90L情势:它承受把接受的乞请和的图谋函数相称,有时候也会向视图递一些参数。

美高梅手机版4858 24

接下来修改子URAV4L文件:应用blog下的urls.py文件,未有就新建,与views.py同级。

 

1,创立模板

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 blog.views import archive
from django.urls import path

urlpatterns = [
    path('', archive)
]

3、启动django容器

在blog目录下创设template目录(mysite/blog/templates),创立模板文件archive.html,它的始末如下:

美高梅手机版4858 25

 

美高梅手机版4858 26😉

{% for post in posts %}
<h2>{{ post.title }}</h2>
<p>{{ post.timestamp }}</p>
<p>{{ post.body }}</p>
{% endfor%}

百度后,替换为;

一三、运维web服务器,查看效果

D:\pydj\mysite>python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).
October 04, 2015 - 20:56:45
Django version 1.8.2, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

二,创立一个视图函数

美高梅手机版4858 27

 

美高梅手机版4858 28😉

在app应用的目录下的view.py添视图函数

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)),
)

1四、编写基础模板,让别的模板来几次三番

 

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))

美高梅手机版4858 29

在templates下新建base.html文件,内容如下:

四、访问后台应用

  • posts = BlogPost.objects.all() :获取数据Curry面所具有BlogPost对象

  • t = loader.get_template(“archive.html”):载模板

  • c =
    Context({‘posts’:posts}):模板的渲染的数码是有3个字典类的靶子Context提供,这里的是1对键值对。

重新启航服务器,访问

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>基础页面</title>
    <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>
</head>
<body>
    <h1>mysite.example.com</h1>
    {% block content %}
    {% endblock %}
</body>
</html>
http://127.0.0.1:8000/admin

3,创设多少个U奥迪Q5L形式

点击blogpost后的+号,提示如下页面,假设不改方面包车型地铁setting文件报错 ;如 No
module named ‘blog.urls’等。

 

美高梅手机版4858 30

率先步,在mysite/urls.py其中撤消上面包车型大巴壹行注释:

(7)完善一下

一伍、重新修改archive.html文件

输入用户、密码,用户名密码为第二遍成立数据库时创建的。回顾“设置数据库”时的设置。

#

显示blog的标题和提交时间

{% extends 'base.html' %}
{% block content %}
    {% for post in posts %}
        <h2>{{ post.title }}</h2>
        <p>{{ post.timestamp}}</p>
        <p>{{ post.body }}</p>
    {% endfor %}
{% endblock %}

 

把它成为:

编辑D:\Python34\Lib\site-packages\Django-1.8.4-py3.4.egg\django\mysite1\blog\model.py

 

 

url(r'^blog/', include('blog.urls')),

美高梅手机版4858 31

1陆、模板中的过滤器

统一计划Model(即设计数据库表)                                 

第二步:在blog应用里面定义U卡宴L,创设2个urls.py(mysite/blog/urls.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 
<p>{{ post.timestamp | date }}</p>

 

from django.conf.urls import *
from blog.views import archive

urlpatterns = patterns('',
                      url(r'^$',archive),
                      )

美高梅手机版4858 32

管道前面通过date函数来张开过滤。

1、设计model

最后,在浏览器输入如下地址

说起底几行为新加。

 

  以后我们展开blog目录下的models.py文件,那是大家定义blog数据结构的地点。展开mysite/blog/models.py
文件进行改造:

美高梅手机版4858 33

(八)blog前端页面

一7、运行web服务器,检查职能

美高梅手机版4858 34😉

九,最终的修饰

从Django的角度看,2个页面具有八个独立的组件:

 

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)

一,模板的精确定位

  • 三个模板(template):模板肩负把传递进入的音讯体现出来。

  • 1个视图(viw):视图担负从数据库获取需求出示的信息。

以上正是采纳django开荒web应用的貌似流程。

美高梅手机版4858 35😉

在mysite/blog/templates目录里成立三个叫base.html的模板

四个UEnclaveL形式:它担任把收到的请求和你的希图函数相配,有时候也会向视图传递一些参数。

 

<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>my blog</h1>
    {% block content %}
    {% endblock %}
  </body>
</html>

一.创建立模型板

二、 再度初叶化数据库

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

    在blog目录下建构template目录(mysite/blog/templates),创造模板文件archive.html,它的剧情如下:

美高梅手机版4858 36😉

  {% 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 %}
{% for post in posts %}
<h2>{{ post.title }}</h2>
<p>{{ post.timestamp }}</p>
<p>{{ post.body }}</p>
{% endfor%}
D:\pydj\mysite>python manage.py makemigrations blog
Migrations for 'blog':
  0001_initial.py:
    - Create model BlogsPost

D:\pydj\mysite>python manage.py syncdb
C:\Python27\lib\site-packages\django\core\management\commands\syncdb.py:24: RemovedInDjango19Warning: The syncdb command will be removed in Django 1.9
  warnings.warn("The syncdb command will be removed in Django 1.9", RemovedInDjango19Warning)

Operations to perform:
  Synchronize unmigrated apps: staticfiles, messages
  Apply all migrations: admin, blog, contenttypes, auth, sessions
Synchronizing apps without migrations:
  Creating tables...
    Running deferred SQL...
  Installing custom SQL...
Running migrations:
  Rendering model states... DONE
  Applying blog.0001_initial... OK

刷新浏览器能够看来效用如下:

二.创办3个视图函数

美高梅手机版4858 37😉

美高梅手机版4858 38

在app应用的目录下的view.py加多视图函数

 

叁,按日期排序

美高梅手机版4858 39

 

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

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))

三、再度runserver运行服务,访问admin后台,创立小说。

class BlogPost(models.Model):
    title = models.CharField(max_length = 150)
    body = models.TextField()
    timestamp = models.DateTimeField()

    class Meta:
        ordering = ('-timestamp',)<br>

美高梅手机版4858 40

  登录成功选取add 创立博客

刷新浏览器,如下:

  • posts = BlogPost.objects.all() :获取数据Curry面所负有BlogPost对象

  • t = loader.get_template(“archive.html”):加载模板

美高梅手机版4858 41

美高梅手机版4858 42

输入博客标题,正文、日期时间、点击save 创造博客。

小说出处: class=”Apple-converted-space”> 开源中华夏族民共和国 class=”Apple-converted-space”> 
小说地址: class=”Apple-converted-space”>  class=”Apple-converted-space”> 
正文地址: class=”Apple-converted-space”>  class=”Apple-converted-space”> 
本文由 class=”Apple-converted-space”> 噜吧 class=”Apple-converted-space”> 整理,转发请保留以上消息;
如有凌犯您的版权, 请联系微信: 37153玖7。

  • c =
    Context({‘posts’:posts}):模板的渲染的数额是有3个字典类的目标Context提供,这里的是一对键值对

美高梅手机版4858 43

三.创造多少个U汉兰达L格局

 

第一步,编辑mysite1/urls.py

 

url(r'^blog/', include('blog.urls')),

 

此地一定要小心,include中必要单引号,否则报错。

设置admin
的BlogsPost界面                                                             

其次步,创设并编辑mysite1/blog/urls.py

 

from django.conf.urls import *
from blog.views import archive
urlpatterns = patterns('',url(r'^$',archive),)

  张开mysite/blog/models.py 文件,做如下修改:

浏览器访问,看是还是不是正规

美高梅手机版4858 44😉

4.前端页面润色

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)

一,模板的准分明位

美高梅手机版4858 45😉

在mysite/blog/templates目录里成立2个叫base.html的模版

 

美高梅手机版4858 46

创建BlogPostAdmin类,承接admin.ModelAdmin父类,以列表的款型显示BlogPost的标题和岁月。

 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>

美高梅手机版4858 47

美高梅手机版4858 48

 

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

 

美高梅手机版4858 49

创办blog的共用部分

 {% 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 %}

从Django的角度看,三个页面具备五个特出的机件:

美高梅手机版4858 50

贰个模板(template):模板担负把传递进入的消息体现出来。

刷新浏览器能够见见效果如下:

3个视图(view):视图负担从数据库获取供给出示的音信。

美高梅手机版4858 51%5BT5JMEK.png)

3个U汉兰达L情势:它担任把接受的乞请和您的妄图函数相配,有时候也会向视图传递一些参数。

美高梅手机版4858 52%5BT5JMEK.png)

 

美高梅手机版4858 53%5BT5JMEK.png)美高梅手机版4858 54

 

 

创办模板                                                                                                 

 

 

在blog项目下创办templates目录(mysite/blog/templates/),在目录下创办模板文件index.html,内容如下:

{% for post in posts %}
    <h2>{{ post.title }}</h2>
    <p>{{ post.timestamp }}</p>
    <p>{{ post.body }}</p>
{% endfor%}

 

 

成立视图函数                                                                                         

 

打开mysite/blog/views.py文件:

美高梅手机版4858 55😉

#coding=utf-8
from django.shortcuts import render
from blog.models import BlogsPost
from 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})

美高梅手机版4858 56😉

blog_list = BlogPost.objects.all() :获取数据Curry面所具有BlogPost对象

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

 

 

创建blog的URL模式                                                                            

 

在mysite/urls.py文件里增加blog的url:

美高梅手机版4858 57😉

#coding=utf-8
from django.conf.urls import patterns, include, url
from django.contrib import admin

urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),
    url(r'^index/$', 'blog.views.index'),
)

美高梅手机版4858 58😉

 

重复启航服务($ python manage.py runserver),访问blog应用()。

页面如下:

美高梅手机版4858 59

理所当然,读者能够延续到admin后台增多blog,从而刷新这些页是不是出示新加上的blog。

 

 

增加样式                                                                                                   

 

成立基础模板

在mysite/blog/templates目录里创设base.html的沙盘:

美高梅手机版4858 60😉

<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>
        <h3>大人不华,君子务实</h3>
        {% block content %}
        {% endblock %}
      </body>
</html>

美高梅手机版4858 61😉

 

美高梅手机版4858,修改index.html模板,让它引用base.html模板和它的“content”块。

美高梅手机版4858 62😉

{% 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 %}

美高梅手机版4858 63😉

再度刷新博客页面:

美高梅手机版4858 64

  请系统的学习django
web框架,然后在此基础上做更加多的恢弘,开荒和睦确实的blog 。

 


参考:

Python Django
快速Web应用开辟入门 :

《Django Web开荒指南》 第3章

blog:

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有