[关闭]
@yudesong 2017-02-19T05:02:21.000000Z 字数 4755 阅读 598

Django 博客搭建

python django


项目与APP

[1] 项目创建
运行以下程序,用于在当前目录下创建项目my_blog

django-admin.py startproject my_blog

[2] 创建Django app

python manage.py startapp article

并在my_blog/my_blog/setting.py里面添加如下代码:

INSTALLED_APPS = [
...
'article', #这里填写的是APP的名称
]

[3] 运行程序

python manage.py runserver

Models

[1] 创建Models
在my_blog/article/modles.py下编写如下代码:

  1. frmo django.db import modles
  2. class Article(modles.Modle):
  3. title = modles.CharField(max_length = 100)
  4. category = modles.CharField(max_length = 50,blank = True)
  5. date_time = modles.DateTimeField(auto_now_add = True)
  6. content = modles.TextField(blank = True,null = True)
  7. def __unicode__(self):
  8. return self.title
  9. class Meta:
  10. ordering = ['-date_time']

[2] 同步数据库

python manage.py migrate
python manage.py makemigrations
python manage.py migrate

[3] 进入Django交互式shell

python manage.py shell

  1. from article.models import Article
  2. Article.objects.create(title = 'Hello World',category = 'Python',content = 'let us to make a simple dataBase opertion')
  3. Article.objects.create(title = 'Learn Django Blog',category = 'Python',content = 'Django Blog 学习')
  4. Article.objects.all()
  5. Article.objects.get(id = 1)
  6. first = Article.objects.get(id = 1)
  7. first.title
  8. first.content
  9. first.date_time
  10. first.content = 'Hello yudesong'
  11. first.delete()
  12. Article.objects.all()

Admin

[1] 创建超级用户

python manage.py createsuperuser

[2] 注册Modles
在my_blog/article/admin.py里面添如下代码,后刷新页面 http://127.0.0.1:8000/admin

  1. from django.contrib import admin
  2. from article.models import Article
  3. # Register your models here.
  4. admin.site.register(Article)

[3] 使用第三方插件
安装

pip install bootstrap-admin

配置
在my_blog/my_blog/setting.py中修改INSTALLED_APPS

  1. INSTALLED_APPS = [
  2. 'bootstrap_admin', #一定要放在'django.contrib.admin'前面
  3. 'django.contrib.admin',
  4. 'django.contrib.auth',
  5. 'django.contrib.contenttypes',
  6. 'django.contrib.sessions',
  7. 'django.contrib.messages',
  8. 'django.contrib.staticfiles',
  9. 'article',
  10. ]

View and URL

[1] 简单Django Views 和URL
在my_blog/article/views.py编写简单逻辑

  1. from django.shortcuts import render
  2. from django.http import HttpResponse
  3. # Create your views here.
  4. def home(request):
  5. return HttpResponse("Hello World,Django");

在my_blog/my_blog/urls.py编写url映射

  1. from django.conf.urls import url,include
  2. from django.contrib import admin
  3. from article import views
  4. urlpatterns = [
  5. url(r'^admin/', admin.site.urls),
  6. url(r'^$',views.home),
  7. ]

[2] Django Views 和URL更进一步
修改my_blog/article/views.py

  1. from article.models import Article
  2. def detail(request, my_args):
  3. post = Article.objects.all()[int(my_args)]
  4. str = ("title = %s, category = %s, date_time = %s, content = %s"
  5. % (post.title, post.category, post.date_time, post.content))
  6. return HttpResponse(str)

修改my_blog/my_blog/urls.py

  1. url(r'^(\d+)/$', views.detail, name='detail'),

Templates

[1]在my_blog/article下添加文件夹templates并添加文件test.html

  1. <!--在test.html文件夹下添加-->
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5. <title>Just test template</title>
  6. <style>
  7. body {
  8. background-color: red;
  9. }
  10. em {
  11. color: LightSeaGreen;
  12. }
  13. </style>
  14. </head>
  15. <body>
  16. <h1>Hello World!</h1>
  17. <strong>{{ current_time }}</strong>
  18. </body>
  19. </html>

[2]在my_blog/my_blog/setting.py设置templates的位置添加

TEMPLATE_DIRS = (os.path.join(BASE_DIR, 'templates').replace('\','/'),)

[3]在templates目录文件夹添加base.html

  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta name="description" content="A layout example that shows off a blog page with a list of posts.">
  7. <title>Andrew Liu Blog</title>
  8. <link rel="stylesheet" href="http://yui.yahooapis.com/pure/0.5.0/pure-min.css">
  9. <link rel="stylesheet" href="http://yui.yahooapis.com/pure/0.5.0/grids-responsive-min.css">
  10. <link rel="stylesheet" href="http://picturebag.qiniudn.com/blog.css">
  11. </head>
  12. <body>
  13. <div id="layout" class="pure-g">
  14. <div class="sidebar pure-u-1 pure-u-md-1-4">
  15. <div class="header">
  16. <h1 class="brand-title">Andrew Liu Blog</h1>
  17. <h2 class="brand-tagline">雪忆 - Snow Memory</h2>
  18. <nav class="nav">
  19. <ul class="nav-list">
  20. <li class="nav-item">
  21. <a class="pure-button" href="https://github.com/Andrew-liu">Github</a>
  22. </li>
  23. <li class="nav-item">
  24. <a class="pure-button" href="http://weibo.com/dinosaurliu">Weibo</a>
  25. </li>
  26. </ul>
  27. </nav>
  28. </div>
  29. </div>
  30. <div class="content pure-u-1 pure-u-md-3-4">
  31. <div>
  32. {% block content %}
  33. {% endblock %}
  34. <div class="footer">
  35. <div class="pure-menu pure-menu-horizontal pure-menu-open">
  36. <ul>
  37. <li><a href="http://andrewliu.tk/about/">About Me</a></li>
  38. <li><a href="http://twitter.com/yuilibrary/">Twitter</a></li>
  39. <li><a href="http://github.com/yahoo/pure/">GitHub</a></li>
  40. </ul>
  41. </div>
  42. </div>
  43. </div>
  44. </div>
  45. </div>
  46. </body>
  47. </html>

home.html

  1. {% extends "base.html" %}
  2. {% block content %}
  3. <div class="posts">
  4. {% for post in post_list %}
  5. <section class="post">
  6. <header class="post-header">
  7. <h2 class="post-title">{{ post.title }}</h2>
  8. <p class="post-meta">
  9. Time: <a class="post-author" href="#">{{ post.date_time }}</a> <a class="post-category post-category-js" href="#">{{ post.category }}</a>
  10. </p>
  11. </header>
  12. <div class="post-description">
  13. <p>
  14. {{ post.content }}
  15. </p>
  16. </div>
  17. </section>
  18. {% endfor %}
  19. </div><!-- /.blog-post -->
  20. {% endblock %}

[4]修改article/views.py中的home函数

  1. def home(request):
  2. post_list = Article.objects.all() #获取全部的Article对象
  3. return render(request,'home.html',{'post_list':post_list})

[5]修改urls.py

url(r'^$',views.home),

动态URL

[1]

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注