新手学习Django,本文学习的文档是《Django Web开发指南》。好了我也是新手,没什么好说了,go!~

首先先确定环境,我是在linux(Ubuntu14.04 gnome)下。

自带python2.7.6

我是用mysql数据库,没有的请下载 sudo apt-get install mysql-server-5.5

接下来准备下载Django了,首先我是用sudo pip install Django==1.7.1(如果没有pip工具,请自行下载或则其他方式下载Django)。

下载完Django之后接着下载MySQL-python(貌似是python跟mysql进行交互的东西吧) pip install MySQL-python

#终端内进入python
>>>import django
>>>django.VERSION   #在python命令行中测试django是否成功安装

>>>import MySQLdb   #如果没有任何错误就是安装成功了

准备好了,接下来就是blog项目。

打开终端进入你要建立的项目下面

~tool/myproject $ django-admin.py startproject mysite  #建立一个Django的项目mysite

~tool/myproject $ cd mysite

~tool/myproject/mysite$ ls -l

总用量:24 (total:24)

-rwxr-xr-x 1 zrl zrl   249 12月 11 20:59 manage.py
drwxrwxr-x 2 zrl zrl 4096 12月 11 21:05 mysite ~tool/myproject/mysite$ ./manager.py runserver   #或者python manager.py runserver都可以

#如果出现下面的错误

You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.

#解决方法

python manage.py migrate   #它可以让我们在修改Model后可以在不影响现有数据的前提下重建表结构。

~/tool/microblog/mysite$ python manage.py migrate
Operations to perform:
Apply all migrations: admin, contenttypes, auth, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying sessions.0001_initial... OK

#最后在启动一下

~/tool/microblog/mysite$ python manage.py runserver
Performing system checks... System check identified no issues (0 silenced).
December 11, 2014 - 13:04:36
Django version 1.7.1, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

出现这个就成功啦~

接下来就是用manage.py创建这个blog app

~/tool/microblog/mysite$ ./manage.py startapp blog

~/tool/microblog/mysite$ ls -l blog/
总用量 20
-rw-r--r-- 1 zrl zrl 63 12月 12 17:55 admin.py
-rw-r--r-- 1 zrl zrl 0 12月 12 17:55 __init__.py
drwxrwxr-x 2 zrl zrl 4096 12月 12 17:55 migrations
-rw-r--r-- 1 zrl zrl 57 12月 12 17:55 models.py
-rw-r--r-- 1 zrl zrl 60 12月 12 17:55 tests.py
-rw-r--r-- 1 zrl zrl 63 12月 12 17:55 views.py

接着需要去setting.py文件中找到INSTALLED_APPS元组.把你的app以模块的形式添加到元组里,就像这样

INSTALLED_APPS=(

'blog',
)

然后去blog中,打开models.py 加入

class BlogPost(models.Model):
title = models.CharField(max_length=150)
body = models.TextField()
timestamp = models.DateTimeField()

接着就是修改 settings.py文件,找到DATABASE

#连接一下数据库,我的是用mysql

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'djangodb',
'HOST': 'localhost',
'USER': 'root',
'PASSWORD': 'password',
}
}

现在你可以告诉Django用你提供的连接信息去连接数据库并且设置应用程序所需的表。

命令很简单:./manage.py syncdb

~/tool/microblog/mysite$ ./manage.py syncdb
Operations to perform:
Apply all migrations: admin, contenttypes, auth, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying sessions.0001_initial... OK 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 'user'): username 账号
Email address: 123456789@163.com 邮箱
Password:            密码
Password (again):       再输入一次密码
Superuser created successfully.

上面这样就算成功了。。

打开blog中的models.py文件

#添加以下的代码

from django.db import models
from django.contrib import admin class BlogsPost(models.Model):
title = models.CharField(max_length=150)
body = models.TextField()
timestamp = models.DateTimeField() admin.site.register(BlogsPost)

 
 继续重新输入./manage.py syncdb,如果出现

Operations to perform:
Apply all migrations: admin, contenttypes, auth, sessions
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.
The following content types are stale and need to be deleted: blog | blogpost Any objects related to these content types by a foreign key will also
be deleted. Are you sure you want to delete these content types?
If you're unsure, answer 'no'. Type 'yes' to continue, or 'no' to cancel: yes

上面已经写了,要运行./manage.py makemigrations 然后再运行 ./manage.py migrate

然后继续 运行 ./manage.py syncdb

~/tool/microblog/mysite$ ./manage.py makemigrations
~/tool/microblog/mysite$ ./manage.py migrate
~/tool/microblog/mysite$ ./manage.py syncdb

接着就可以开启看看效果了

貌似这效果看的不是很爽,我们来改改吧。打开blog下的models.py修改一下

from django.db import models
from django.contrib import admin 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)

 

从Django的角度看,一个页面具有三个典型的组件:

一个模板(template):模板负责把传递进来的信息显示出来。

一个视图(viw):视图负责从数据库获取需要显示的信息。

一个URL模式:它负责把收到的请求和你的试图函数匹配,有时候也会向视图传递一些参数。

打开mysite/blog/views.py文件:

 from django.shortcuts import render
from django.template import loader,Context
from django.http import HttpResponse
from blog.models import BlogsPost # Create your views here.
def archive(request):
posts = BlogsPost.objects.all()
t = loader.get_template("archive.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提供,这里的是一对键值对。

创建blog模板,在archive.html将for的块标签(block tag),{% .... %}添加进去

   {% for post in posts %}
<h2>{{ post.title }}</h2>
<p>{{ post.timestamp | date:"1,F jS"}}</p>
<p>{{ post.body }}</p>
{% endfor %}

创建一个URL模式,虽然可以在mysite/urls.py中创建所需的URL模式,不过这样会在项目和app之间制造混乱的耦合。

所以我们要将mysite/urls.py里有一行注释的示例几乎是我们所需要的代码。

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

接着在blog下面创建一个urls.py,将一下代码写入

   from django.conf.urls import *
from blog.views import archive urlpatterns = patterns('',
url(r'^$',archive),
)

来启动一下,看看效果如何 ./manage.py runserver

貌似看起来好搓。我们来稍微修改一下吧,看起来爽点。

接着在blog/templates下创建一个base.html将代码写入

<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>Just-so-so</h1>
{% block content %}
{% endblock %}
</body>
</html>

再将blog/template下的archive.html的文件,引用base.html且和他的'content'块

{% 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 %}

再次刷新页面

终于完成了这个blog,虽然碰到了很多问题。但是学习到的东西还是很多的~

Django快速学习搭建blog项目的更多相关文章

  1. 使用 Django1.11搭建blog项目

    使用Django搭建blog项目 简单设置: http://blog.csdn.net/w_e_i_/article/details/70761604 模板渲染: http://blog.csdn.n ...

  2. Django博客开发教程,Django快速开发个人blog

    学DjangoWEB框架,估计大部分的朋友都是从Blog开发开始入门的,Django中文网发布了一个Django开发教程,这个教程简单易懂,能让你快速的使用Django开发一个漂亮的个人blog,是D ...

  3. Spring(六):Spring&Struts2&Hibernate搭建的blog项目

    经过断断续续的学习.累积,终于基于别人的开源blog项目,变成了自己的第一个相对完整点的blog项目. 计划暂时把这个blog程序暂停------有更多(工作中用到的)东西需要去做,因此学习SSH b ...

  4. webapi框架搭建-创建项目(二)-以iis为部署环境的配置

    上篇:webapi快速框架搭建-创建项目(一) 在"创建项目(一)"这一篇里已经创建了一个空的项目,但项目上什么都没有,本篇描述如何将webapi配置成部署在iis上. 步骤 用n ...

  5. 搭建springboot项目

    1.搭建环境windows10+jdk1.8+eclipse4.8+maven 2.为了学习微服务架构学习搭建基础项目 3.分为两种搭建方式为maven项目和单独建立springboot项目(ecli ...

  6. 教你如何搭建vue项目

    笔者工作也有一些时间,需要用vue写项目时也总是项目组长已经把项目搭建好了, 偶尔心血来潮想试着自己搭建一个vue项目 我们搭建vue项目呢主要是用到了vue-cli来搭建,但是前提是必须要已经安装好 ...

  7. SpringBoot+SpringMVC+MyBatis快速整合搭建

    作为开发人员,大家都知道,SpringBoot是基于Spring4.0设计的,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程.另外Spr ...

  8. django 快速搭建blog

    如果本文看不懂的,去看的我视频吧!http://www.testpub.cn/ ------------------------------------------- Django 自称是“最适合开发 ...

  9. Django学习笔记(19)——BBS+Blog项目开发(3)细节知识点补充

    本文将BBS+Blog项目开发中所需要的细节知识点进行补充,其中内容包括KindEditor编辑器的使用,BeautifulSoup 模块及其防XSS攻击,Django中admin管理工具的使用,me ...

随机推荐

  1. 2017年1月4日-linux学习

    老男孩Linux运维实战培训 1.EmEditor文本编辑工具,我用Notepad++也很好用 2.win32文本比较工具使用技巧,我用svn也很好用 3.安装vmware软件及新建配置虚拟机视频,已 ...

  2. quick sort 的简化实现

    Pivot 随机选取意义不大 第一种方法使用随机pivot,使得尽可能平均二分序列,而实际上一般来说需要排序的集合往往是乱序的,无需重新生成随机数作为pivot,大可使用固定位置的数作为pivot,这 ...

  3. 【IOS学习】1.IOS框架

    1.框架概述 iOS的系统架构分为四个层次:核心操作系统层(Core OS layer).核心服务层(Core Services layer).媒体层(Media layer)和可触摸层(Cocoa ...

  4. ado.net五大对象

    五大对象分别是: 1. Connection:与数据源建立连接. 2. Command:对数据源执行SQL命令并返回结果. 3. DataReader:读取数据源的数据,只允许对将数据源以只读.顺向的 ...

  5. phpstorm 配置 babel 支持EcmaScript6

    1.安装nodejs 2.npm install --save-dev babel-cli 3.npm install babel-preset-es2015 --save-dev 4.phpstor ...

  6. 未能加载文件或程序集 Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad

    没有 microsoft.web.infrastructure.dll 文件. 解决方式: ,第一种:在所发布的项目文件里面的 bin 文件目录下,添加 microsoft.web.infrastru ...

  7. MVC学习笔记-01

    什么是MVC MVC是指(Model-View-Controll即模型-视图-控制器)用于表示表示一种软件架构模式,它把软件分成三个基本的部分:模型(Model),视图(view),控制器(Contr ...

  8. Python不完全入门指南

    适用范围: 有一定编程基础,想快速入门python的人群 说明: 使用jupyter notebook编写,可以使用nbviewer网站进行查看. Python不完全入门指南 项目放在github上, ...

  9. ruby 中%Q %q %W %w %x %r %s的用法

    %Q 用于替代双引号的字符串. 当你需要在字符串里放入很多引号时候, 可以直接用下面方法而不需要在引号前逐个添加反斜杠 (\") >> %Q(Joe said: "Fr ...

  10. HTML DOM元素的Dragdrop

    在前端web页面中,为了提高用户体验,通常会希望将页面中的元素设计成可dragdop的,简化用户操作.这一设计特性在缺少鼠标的触摸屏设备上,显得更为重要. 在早期的应用中,我们通常需要借助第三方的ja ...