zoukankan      html  css  js  c++  java
  • 通过django 速成 blog

    1、            创建项目

    33进入在python目录下的scripts文件后执行

    django-admin.py   startproject  mysite

    这样就生成了名为mysite 的工程。

            可执行.manage.py runserver  运行开发服务器此时, 终端下会输出

          登录 http://127.0.0.1:8000/  显示这样一个页面

    同时终端会输出[13/Aug/2014 01:05:14] "GET / HTTP/1.1" 200 1957

    从左往右依次为时间戳、请求、http状态码 、 字节数

    2、            创建blog应用

    执行 .manage.py startapp blog

    这样就创建了blog app, 在项目(mysite)的目录下会有blog的目录。

    之后还需要 在mysite 目录下的sittting.py 中找到元组INSTALLED_APPS ,  在元组的末尾添上‘blog.app’,  (注意逗号)

    3、            设计model

    在models.py中加入下列代码

    from django.db import models

    from django.contrib import admin

    class BlogPost(models.Model):

    title = models.CharField(max_length = 150)

    body = models.TextField()

      timestamp = models.DateTimeField()

    4、            设置数据库

    如果是使用sqlite3,只需在setting.py 的 Databases字典中补全 前两项 即‘ENGINE’: 'django.db.backends.sqlite3'

    ‘NAME’ =   ****django.db  #为数据存放地址,自定义

    然后执行.manage.py syncdb #同步数据 终端中,会看到下列输出

       Creating table auth_message

    Creating table auth_group

      ……..

    之后会被问一下与django.contrib.auth app有关的问题,许按步  骤填写

    5、            设置自动admin应用

    在 settings.py 中 ‘django.contrib.auth’ 下添加下列一行

      ‘django.contrib.admin’

    然后再次执行syncdb命令 ,

    设置完app后, 需要为它指定一个URL

    在urls.py 中 去掉rl(r'^admin/', include(admin.site.urls)) 前的注释符

    最后, 在 models.py 导入admin

      from django.contrib import admin

    并在最后加上一行注册model的代码

    admin.site.register(BlogPost)

    6、            试用admin  登录 127.0.0.1:8000/admin 后输入 用户名和密码会看到一下页面

    随意编辑几篇 blog并保存。为了然列表更美观在models.py中添加blogpostadmin类,并将它加到注册代码里

    from django.db import models

    from django.contrib import admin

    class BlogPost(models.Model):

           title = models.CharField(max_length = 150)

           body = models.TextField()

           timestamp = models.DateTimeField()

           class Meta:

                  ordering = ('-timestamp',)

    class BlogPostAdmin(admin.ModelAdmin):

           list_display = ('title', 'timestamp')

    admin.site.register(BlogPost, BlogPostAdmin) #regiet blogpost model

    刷新一下页面, 会看到

    相比原先有了 title 和timestamp 栏

    7、            建立blog的公共部分。

    创建文件 archive.html 保存到blog emplates中内容如下

    {% for post in posts %}

    <h2>{{post.title}}</h2>

    <p>{{post.timestamp|date}}</p>

    <p>{{ post.body}}</p>

    {% endfor %}

    然后创建视图函数打开blogview.py文件并输入:

    from django.template import loader, Context

    from django.http import HttpResponse

    from mysite.blog.models import BlogPost

    def archive(request):

    posts = BlogPost.objects.all()

    t = loader.get_template('archive.html')

    c = Context({'posts': posts})

      return HttpResponse(t.render(c))

    之后再创建 url模式 在mysite/urls.py 添加

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

    这会捕捉任何以blog/开始的请求, 并传递给接下来的url模式

    Mysite/blog/urls.py:

    from django.conf.urls.defaults import *

    from mysite.blog.views import archive

    urlpatterns = patterns('',

        url(r'^$', archive),   

    )

    8、            最后润色

    创建base.html 文件, 并保存在mysite/blog/templates内容如下:

    <html>

    <style type="text/css">

    body { color: #cdcdcd; backgroud:#cdcdcd; padding: 0 5em; margin: 0}

    h1 { padding:2em 1em; backgroud: #675}

    h2{color: #cdcdcd; border-top: 1px dotted #cdcdcd; margin-top; 2em}

    p {margin: 1em 0}

    </style>

    <body>

    <h1>mysite.example.com</h1>

    {% block content %}

    {% endblock %}

    </body>

    </html>

    然后更新achive.html内容:

    {% extends "base.html" %}

    {% block content %}

    {% for post in posts %}

    <h2>{{post.title}}</h2>

    <p>{{post.timestamp|date}}</p>

    <p>{{ post.body}}</p>

    {% endfor %}

    {% endblock %}

    运行后登陆http://127.0.0.1:8000/blog/

    可在models.py文件中添加嵌套类 Meta:是blog 按顺序排序

    from django.db import models

    from django.contrib import admin

    class BlogPost(models.Model):

    title = models.CharField(max_length = 150)

    body = models.TextField()

    timestamp = models.DateTimeField()

    class Meta:

            ordering = ('-timestamp',)

    class BlogPostAdmin(admin.ModelAdmin):

    list_display = ('title', '-timestamp')

    admin.site.register(BlogPost, BlogPostAdmin) #regiet blogpost model

    ‘-timestamp’为降序  ‘timestamp’为升序

  • 相关阅读:
    ASP.NET MVC EF 连接数据库(一)-----Database First
    设计模式——策略模式
    设计模式——简单工厂模式
    分享一些技术大牛的博客
    有货双中心双活架构实践
    分布式协调服务Zookeeper应用场景
    分布式服务框架资料汇总
    Java线程池ThreadPoolExecutor解析
    服务注册中心Zookeeper和Eureka比较
    JVM内存结构、垃圾回收及性能调优
  • 原文地址:https://www.cnblogs.com/yeahpeng/p/3910790.html
Copyright © 2011-2022 走看看