Django基础流程,快捷搭建简单的Blog

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

软件条件

  Django 自称是“最符合开发有限期的面面俱圆WEB框架”。本文参考《Django
web开发指南》,急忙搭建二个blog
出来,在中游涉及许多知识点,那里不会详细表达,要是你是率先次接触Django
,本文少禽让你在感性上对Django有个认识,完开销文操作后会让你有趣味阅读的有关书籍和文档。

一,创立项目

不久前在商讨Python,初阶是因为想做个爬虫,明日看了点基础教程,黑龙江辅仁大学的录制,通晓了python的语法规范及言语特色,首要有③:

Pycharm
2018.1

废话少说,come on!!

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

一.动态脚本语言;

Python
3.6

本操作的环境:

 django-admin.py startproject mysite

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

Django
2.0.3

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

2, 项目结构如下:

3.运用广泛,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 —– 负责把UCR-VL方式射到应用程序。

下边先河正文,Django是Python时间中超级的web框架,由二个年轻人创建,名字来自二个吉他手(看三人的相片,叛逆青年类型,取这几个名也就不意外了)。

一向动用Pycharm的菜系来创建项目,命名字为mysite。

Django 1.8.2

二 ,运转开发服务器

Django的最大亮点正是足以长足建立一个web应用,语法简洁,及其轻量,甚至内含叁个web容器;也是依照MVC理念,更可相信的传道是MTC。

mysite

  mysite

    __init__.py

    settings.py

    urls.py

    wsgi.py

  templates

  manage.py

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

要立马查看django项目接纳的周转,能够采取Django项目里的mange.py

以下是前日接纳Django建立三个blog应用的手续,走了好几弯路,记录下来备查:

 

 

切换来工程目录,执行运维服务器命令:

(一)安装

二、新建应用

 

python manage.py runserver

1.安装Python

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


成立工程                                                                                                         

完成:

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

startapp
blog

 

美高梅手机版4858 1

2.安装Django

blog

  migrations

  __init__.py

  admin.py

  apps.py

  models.py

  tests.py

  views.py

创立mysite工程项目:

开拓浏览器,输入访问地址:1二七.0.0.壹:九千

官网下载一.八.7,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\美高梅手机版4858 ,Django-1.8.4-py3.4.egg\django

 

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

blog应用文本结构如下:

三.开立多少个类型

肆、编写第二个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\django\bin目录下,执行
Python-admin.py startproject mysite1   (如果事mac
osx,则应为django-admin)

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

urls.py —– 负责把UOdysseyL形式映射到应用程序。

四,设计的Model

施行完后,自动生成二个mysite壹目录,其下有mysite壹目录和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的1个子类
。它有变量title(blog的题),body(blog的内容部分),timestamp(blog的刊立时间)。

manage.py startapp blog

6、创建表

D:/pydj> cd mysite

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

5,设置数据库

一声令下执行后,在D:\Python34\Lib\site-packages\Django-1.8.4-py3.4.egg\django\mysite1\
下生成2个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,然后依据提醒输入相关的音信。实现后会生成1个数据库文件db.sqlite3

美高梅手机版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模块必要让mysite1项目知晓,编辑在D:\Django基础流程,快捷搭建简单的Blog。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.

在结尾添1行代:

第九行事新加

 

美高梅手机版4858 11😉

admin.site.register(BlogPost)<br>

(三)同步数据

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应用                                                                                   

3,打开浏览器,输入http://1二七.0.0.一:七千/admin/,输入刚才创制数据库时候填写的帐号就能进来admin界面。

提示

 

  

美高梅手机版4858 12

美高梅手机版4858 13

10、创制博客的来得页面

  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.sqllite3,正是暗中同意数据库;

1一、创造视图函数

美高梅手机版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,为它添3个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

先修改总UENVISIONL文件:项目下的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的角度看,一个页面具有五个特出的零件:

编辑在D:\Python34\Lib\site-packages\Django-1.8.4-py3.4.egg\django\mysite1\mysite1\url.py文件,自带的如下,不晓得为何倒霉使

 

美高梅手机版4858 23😉

  • 三个模板(template):模板负责把递进来的新闻呈现出来。

  • 三个视图(viw):视图负责从数据库获取需求出示的消息。

  • 一个UOdysseyL形式:它肩负把吸收的伸手和的计算函数相称,有时候也会向视图递1些参数。

美高梅手机版4858 24

下一场修改子U凯雷德L文件:应用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提供,这里的是一对键值对。

再度起动服务器,访问

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

三,成立二个U帕杰罗L情势

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

 

美高梅手机版4858 30

率先步,在mysite/urls.py在那之中撤销下边包车型客车1行注释:

(柒)完善一下

15、重新修改archive.html文件

输入用户、密码,用户名密码为第2次创造数据库时创建的。回顾“设置数据库”时的安装。

#

展现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,成立3个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前端页面

1柒、运营web服务器,检查成效

美高梅手机版4858 34😉

9,最后的润色

从Django的角度看,四个页面具有两个杰出的机件:

 

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)

1,模板的精鲜明位

  • 3个模板(template):模板负责把传递进入的新闻显示出来。

  • 一个视图(viw):视图负责从数据库获取需求浮现的音讯。

如上正是使用django开发web应用的壹般流程。

美高梅手机版4858 35😉

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

2个UHavalL方式:它负责把接受的呼吁和您的精算函数相称,有时候也会向视图传递1些参数。

 

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

一.成立模板

2、 再一次起先化数据库

二,修改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

刷新浏览器能够见见功用如下:

二.开立三个视图函数

美高梅手机版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

  登6成功选用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九七。

  • c =
    Context({‘posts’:posts}):模板的渲染的多少是有二个字典类的对象Context提供,那里的是1对键值对

美高梅手机版4858 43

三.成立2个UQX56L方式

 

第一步,编辑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😉

四.前端页面润色

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目录里创制一个叫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的角度看,2个页面具有四个非凡的零件:

美高梅手机版4858 50

3个模板(template):模板负责把传递进入的信息体现出来。

刷新浏览器可以看看功能如下:

一个视图(view):视图负责从数据库获取须求出示的音讯。

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

二个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()再次回到一个页面(index.html),顺带把数据库中询问出来的富有博客内容(blog_list)也壹并回到。

 

 

创建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😉

 

修改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开发指南》 第二章

blog:

 

 

发表评论

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

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