Django学习笔记--第一天--搭建一个简易博客
2016-06-02 18:04
856 查看
前言:最近准备写一个自己的个人博客。本来想用.net开发的,由于VS有点装不上,最近学习Python。选择了python的web框架Django。
开发环境:Ubuntu 14.04
开发工具:Pychram 2016.1.0 社区版
Python版本:2.7.6
Django版本:1.9.6
<参考资料>—前人文章:http://my.oschina.net/jastme/blog/345265
下面开始:
1.工具安装:
python已经自带;打开Pychram
File–>settings–>Project **–>Project Interpreter
点击绿色的+号,搜索Django –>选择 Install Package即可安装完成.
输入:
验证是否安装成功。如果没有报错,表示成功。
2.创建工程
PS:路径最好不要包含中文,否则会报错
打开终端输入:
新建了许多工程文件:
manage.py —– Django项目里面的工具,通过它可以调用django shell和数据库等。
settings.py —- 包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量。
urls.py —– 负责把URL模式映射到应用程序。
创建了Blog应用
用Pychram打开工程:可以看到下面的文件结构:
然后在/mysite/mysite/settings.py里面的
添加’blog’,
表示添加一个blog app
3.数据库创建
django使用代码的方式创建数据库。
首先修改mysite/blog/models.py 继承默认的数据库类,创建数据库
BlogPost类是django.db.models.Model的一个子类 。它有变量title(blog的标题),body(blog的内容部分),timestamp(blog的发表时间)
这里只是设计了数据库,并没有创建数据库。
Dajango支持主流的数据库服务器(MySQL,PostgreSQL,Oracle和MSSQL),但本项目使用SQLite,这里之需要通过一条简单的命令可以创建SQLite数据库。需要修改在settings里面,默认为sqlite3
创建数据库:
切换到含有manage.py的目录下:
4.后台管理
django默认开启了admin的后台:
终端输入:python manage.py runserver开启服务(再价一个参数可以设置端口号)
访问 http://127.0.0.1:8000/admin 访问后台
需要管理员密码账号:
终端输入:
根据提示创建即可。
五.修改数据库内容,添加其他项。
在最后添加一行代码:
前面添加:
这样就多了一个BlogPost的项了
Add–>添加文章,就能开始写文章了。
然后再对后台界面做个优化,让文章的标题时间显示出来‘
修改blog应用的models.py,为它添加一个admin.ModelAdmin的子类BlogPostAdmin.以列表形式显示BlogPost的标题和时间。
完整代码:
六.把后台博客优雅的显示到前台去
blog下面新建一个templates文件夹,这里可以放置各种资源,会默认找到这里。
在templates下新建一个模板页面。
其中{{ }}里面包含的是要显示的变量,使用一个for循环把文章全部显示在页面上。
视图
在这里调用模板并且传入参数:
posts = BlogPost.objects.all() :获取数据库里面所拥有BlogPost对象
t = loader.get_template(“archive.html”):加载模板
c = Context({‘posts’:posts}):模板的渲染的数据是有一个字典类的对象Context提供,这里的是一对键值对。
现在还是不能显示博客页面,因为请求首先是在mysite/urls里面处理的,
所以要添加一个url到blog的views里面去。
打开服务,访问http://127.0.0.1:8000/blog/
七.美化界面
mysite/blog/templates目录里创建一个叫base.html的模板
继承模板:muban.html
按日期排序
修改blog 应用下的models.py,为BlogPost添加一个Meta嵌套类。如下:
刷新浏览器:
开发环境:Ubuntu 14.04
开发工具:Pychram 2016.1.0 社区版
Python版本:2.7.6
Django版本:1.9.6
<参考资料>—前人文章:http://my.oschina.net/jastme/blog/345265
下面开始:
1.工具安装:
python已经自带;打开Pychram
File–>settings–>Project **–>Project Interpreter
点击绿色的+号,搜索Django –>选择 Install Package即可安装完成.
输入:
import django
验证是否安装成功。如果没有报错,表示成功。
2.创建工程
PS:路径最好不要包含中文,否则会报错
打开终端输入:
django-admin.py startproject mysite cd mysite python manage.py startapp blog
django-admin.py startproject mysite
新建了许多工程文件:
manage.py —– Django项目里面的工具,通过它可以调用django shell和数据库等。
settings.py —- 包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量。
urls.py —– 负责把URL模式映射到应用程序。
python manage.py startapp blog
创建了Blog应用
用Pychram打开工程:可以看到下面的文件结构:
然后在/mysite/mysite/settings.py里面的
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ]
添加’blog’,
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'blog', ]
表示添加一个blog app
3.数据库创建
django使用代码的方式创建数据库。
首先修改mysite/blog/models.py 继承默认的数据库类,创建数据库
from __future__ import unicode_literals 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()
BlogPost类是django.db.models.Model的一个子类 。它有变量title(blog的标题),body(blog的内容部分),timestamp(blog的发表时间)
这里只是设计了数据库,并没有创建数据库。
Dajango支持主流的数据库服务器(MySQL,PostgreSQL,Oracle和MSSQL),但本项目使用SQLite,这里之需要通过一条简单的命令可以创建SQLite数据库。需要修改在settings里面,默认为sqlite3
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), }
创建数据库:
切换到含有manage.py的目录下:
python manage.py makemigrations python manage.py migrate
4.后台管理
django默认开启了admin的后台:
urlpatterns = [ url(r'^admin/', admin.site.urls), ]
终端输入:python manage.py runserver开启服务(再价一个参数可以设置端口号)
访问 http://127.0.0.1:8000/admin 访问后台
需要管理员密码账号:
终端输入:
python manage.py createsuperuser
根据提示创建即可。
五.修改数据库内容,添加其他项。
在最后添加一行代码:
admin.site.register(BlogPost)
前面添加:
from django.contrib import admin
这样就多了一个BlogPost的项了
Add–>添加文章,就能开始写文章了。
然后再对后台界面做个优化,让文章的标题时间显示出来‘
修改blog应用的models.py,为它添加一个admin.ModelAdmin的子类BlogPostAdmin.以列表形式显示BlogPost的标题和时间。
完整代码:
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)
六.把后台博客优雅的显示到前台去
blog下面新建一个templates文件夹,这里可以放置各种资源,会默认找到这里。
在templates下新建一个模板页面。
muban.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>我的博客</title> </head> <body> {% for post in posts %} <h2>{{ post.title }}</h2> <p>{{ post.timestamp }}</p> <p>{{ post.body }}</p> {% endfor%} </body> </html>
其中{{ }}里面包含的是要显示的变量,使用一个for循环把文章全部显示在页面上。
视图
blog/views里面包含要显示的页面方式。
在这里调用模板并且传入参数:
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 muban(request): posts = BlogPost.objects.all() t = loader.get_template("muban.html") c = Context({'posts':posts}) return HttpResponse(t.render(c))
posts = BlogPost.objects.all() :获取数据库里面所拥有BlogPost对象
t = loader.get_template(“archive.html”):加载模板
c = Context({‘posts’:posts}):模板的渲染的数据是有一个字典类的对象Context提供,这里的是一对键值对。
现在还是不能显示博客页面,因为请求首先是在mysite/urls里面处理的,
所以要添加一个url到blog的views里面去。
from django.conf.urls import url from django.contrib import admin from blog import views as blog_views # new urlpatterns = [ url(r'^blog', blog_views.muban, name='muban'), # new url(r'^admin/', admin.site.urls), ]
打开服务,访问http://127.0.0.1:8000/blog/
七.美化界面
mysite/blog/templates目录里创建一个叫base.html的模板
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <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>
继承模板:muban.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> {% 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 %} </body> </html>
按日期排序
修改blog 应用下的models.py,为BlogPost添加一个Meta嵌套类。如下:
class BlogPost(models.Model): title = models.CharField(max_length = 150) body = models.TextField() timestamp = models.DateTimeField() class Meta: ordering = ('-timestamp',)
刷新浏览器:
相关文章推荐
- Intent中的四个重要属性——Action、Data、Category、Extras
- django环境搭建
- 进程、线程、轻量级进程、协程和go中的Goroutine
- google guava 重复key的Map范例使用
- Go项目的目录结构说明
- django restful api
- GoEasy如何取消订阅呢
- Break Google ReCAPTCHA: ReCAPTCHA科普
- django优化和扩展(一)
- zygote,systemserver 启动分析
- DialogFragment is gone after returning back from another activity
- Dashgo D1使用注意说明
- 关于Django的contenttypes数据迁移
- Dashgo D1软件支持
- mongo集群启动脚本
- django进阶篇
- django适当进阶篇
- Django细谈之:Model和ModelForm关联
- Django 权限管理
- Django 权限控制配置步骤