您的位置:首页 > 编程语言 > Go语言

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即可安装完成.



输入:
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',)


刷新浏览器:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: