参考:《Django Web开发指南》

Django的安装配置

1、https://www.djangoproject.com/download/下载Django-1.5.1.tar.gz
2、在ubuntu下载解压:tar xzvf Django-1.5.1.tar.gz
3、切换到root,在Django-1.5.1/下执行 python setup.py install
4、安装在/usr/local/lib/python2.7/dist-packages/下
5、创建work目录,执行 django-admin.py startproject mysite
6、进入mysite目录,启动django服务器:
1)、python manage.py runserver
在浏览器中输入http://192.168.9.155:8080
2)、python manage.py runserver 0.0.0.0:8000
在浏览器中输入http://192.168.9.155:8000
可以看到相应页面了

创建APP,一个简易Blog

1、在mysite/下执行 python manage.py startapp blog,这样就创建完了,然后要把该app加到配置文件work/mysite/mysite/setting.py中,在INSTALLED_APPS 中增加'mysite.blog',并把'django.contrib.admin',和'django.contrib.admindocs',的注释去掉
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
'django.contrib.admindocs',
)

2、然后就可以编辑自己的模板了,编辑work/mysite/blog/models.py文件如下:

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()

3、修改mysite目录下urls.py:

from django.contrib import admin
admin.autodiscover()

url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
url(r'^admin/', include(admin.site.urls)),

的注释去掉

编辑完成后就可以在 settings.py 中配置数据库了,编辑配置文件中关于database的内容如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'django', # Or path to database file if using sqlite3.
# The following settings are not used with sqlite3:
'USER': 'johnny',
'PASSWORD': '0000',
'HOST': '192.168.9.155', # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
'PORT': '3306', # Set to empty string for default.
}
}

注意:django数据库必须是已经建立好的数据库

4、现在你可以告诉Django用你提供的连接信息去连接数据库并且设置应用程序所需要的表,执行命令:./manage.py syncdb
可能会遇到错误:
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

解决办法:

1)、在http://sourceforge.net/projects/mysql-python/files/mysql-python-test/1.2.4b4/下载MySQL-python-1.2.4b4.tar.gz
解压后执行python setup.py build ,如果出现错误,需要到https://pypi.python.org/pypi/distribute/0.6.28 下载distribute-0.6.28.tar.gz

解压后执行python setup.py install 安装;

在到MySQL-python-1.2.4b4目录执行python setup.py build 成功;再执行python setup.py install 

2)、或者apt-get安装:sudo apt-get install python-mysqldb
5、再次到mysite执行./manage.py syncdb
Creating tables ...
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_groups
Creating table auth_user_user_permissions
Creating table auth_user
Creating table django_content_type
Creating table django_session
Creating table django_site
Creating table blog_blogpost You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'johnny'):
Email address: heqiangfly@163.com
Password:
Password (again):
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)

6、启动Server:python manage.py runserver 0.0.0.0:8000,在浏览器中登录:http://192.168.9.155:8000/admin/就可以看到登录界面了;

7、此时你会发现我们新建的sblog并没有出现,那么在blog目录下新建admin.py,编辑如下代码,刷新admin页面,你会有新的发现:

#!/usr/bin/python
# -*- coding: utf-8 -*- from django.contrib import admin
from sblog.models import BlogPost admin.site.register(BlogPost)

8、每次往项目里面添加新的应用后,都要运行一下./manage.py syncdb命令确保它所需要的表已经在数据库里创建了。否则会出现如下的错误:

DatabaseError: (1146, "Table 'django_blog.django_admin_log' doesn't exist")

9、这时你可以点页面上的Blogs posts后面的Add来发表一篇博客了;编辑完title和内容并获得日期和时间后,点击save保存,你到一个列出你所有blog贴子的列表,你会发现贴子的名称“BlogPost object”,是不是看着不顺眼呢?下面的代码可以变得让他顺眼一些:用blog的名称来在列表上显示:

在model.py上添加:

from django.contrib import admin
class BlogPostAdmin(admin.ModelAdmin):
list_display = ('title','timestamp')

在admin.py中修改:

from blog.models import BlogPost ,BlogPostAdmin
admin.site.register(BlogPost,BlogPostAdmin)

点击刷新页面,列表的title会显示你blog的标题,并显示时间戳;



创建Blog的公共部分:

1、创建完应用的数据库部分和admin部分后,接下来看看面向公众的网页部分。从Django的角度来看,一个页面具有三个典型的组建:模版、视图和URL模式

a、创建模版:编辑一个archive.html的网页,并放到blog/templates目录下:

{% for post in posts %}
<h2>{{post.title}}</h2>
<p>{{post.timestamp}}</p>
<p>{{post.body}}</p>
{% endfor %}

b、创建视图函数:
在view.py中输入:

from django.template import loader,Context
from django.http import HttpResponse
from 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))

c、创建一个URL模式:
将mysite下urls.py的下面一行注释去掉并修改:

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

在blog目录中创建一个新的urls.py并编辑:

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

2、在浏览器中输入http://192.168.9.155:8000/blog/,你会看到一个很清新的页面,有贴子的标题,时间和正文

其他优化:

1、模版

如果你的站点有一个blog、一个相册和一个链接页面,那么你或许要用到模版:

在blog/templates里面创建一个base.html的模版,内容如下:

{% block content %}
<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>Johnny.He 的博客</h1>
{% block content %}
{% endblock %}
</body>
</html>

修改archive.html让它引用基础模版:

{% extends "base.html" %}
{% block content %}
{% for post in posts %}
<h2>{{post.title}}</h2>
<p>{{post.timestamp}}</p>
<p>{{post.body}}</p>
{% endfor %}
{% endblock %}

这里{% extends "base.html" %}标签告诉Django去查找一个叫base.html的标签,并将这个模块命名块的内容填入到那个模版里相应的块里;

刷新blog,你将会看到一个不一样的页面;

2、按日期排序:

你应该已经注意到博客列表不是按照传统的日期来排序的,要做到这个功能,在Django中有好几种方法可供选择。可以在model中加入一个默认的排序:

在class BlogPost(models.Model):类中加入一个嵌套类:

     class Meta:
ordering = ('-timestamp',)

刷新http://192.168.9.155:8000/blog/,就可以看到博客最新的贴子已经排到上面了

3、通过模版过滤器格式化时间戳:

如果你觉得Aug. 7, 2013, 3:32 p.m.这种时间戳格式看着不爽,那么通过下面操作可以变得更好:

打开archive.html将<p>{{post.timestamp}}</p>改为<p>{{post.timestamp|date}}</p>,这样会把3:32 p.m过滤掉

改为<p>{{post.timestamp|date:"Y,F jS,l"}}</p>,会变成:2013,August 7th,Wednesday 的格式



Django的安装配置和开发的更多相关文章

  1. 安装配置PhoneGap开发环境(二)——使用Cordova取代PhoneGap创建项目

    1 Cordova是谁 PhoneGap的官方文档说的非常清楚.Cordova是PhoneGap的引擎,这两者的关系类似于WebKit与Chrome浏览器的关系.所以一些核心的基础操作对于Cordov ...

  2. Python Django的安装配置

    学习Django前,我们要确定电脑上是否已经安装了Python,目前Python有两个版本,不过这两个版本并不互相兼容,所以根据个人选择合适的版本. 因为从Django2.0开始将不再支持Python ...

  3. python_在windows下安装配置python开发环境及Ulipad开发工具

    最近开始学习Python,在网上寻找一下比较好的IDE.因为以前用C#做开发的,用Visual Studio作为IDE,鉴于用惯了VS这么强大的IDE,所以对IDE有一定的依赖性. Python的ID ...

  4. SharePoint Framework (SPFx)安装配置以及开发-基础篇

    前言 SharePoint Framework(SPFx),是页面 和Webpart的模型,完全支持本地开发(即完全可以脱离SharPoint环境在本地进行开发),SPFx包含了一系列的client- ...

  5. 在windows下安装配置python开发环境及Ulipad开发工具(转)

    最近开始学习Python,在网上寻找一下比较好的IDE.因为以前用C#做开发的,用Visual Studio作为IDE,鉴于用惯了VS这么强大的IDE,所以对IDE有一定的依赖性. Python的ID ...

  6. 安装配置Android开发环境SDK

    引言: 好搞事情,搞点移动端测试高大尚的东西,首先先得把环境搭建起来: 1.下载 握了个草,很多网站都直接推荐到android官网去下载,叔不知google官网早就被我大天朝给墙了,对于不喜欢FQ的天 ...

  7. 检查python以及django是否安装配置成功

    首先说明下,我使用pycharm作为开发的IDE,在第一次创建django项目的时候,会自动安装django包的.(网上也有很多单独安装的方法),环境变量配置成功后,就是用下面的方法检测安装成功与否. ...

  8. Fedora Linux 下安装配置C开发环境Code::Blocks

    一.提前的话要说C语言和Linux的关系大家应该都不会陌生,Linux系统内核就是用C语言开发的,所以所有的Linux系统下面 都会有C的编译调试工具,不过这些工具都是命令式的,正式开发的话会很不方便 ...

  9. Mac下django简单安装配置步骤

    一.安装软件包并创建项目 $sudo pip install django$sudo python -c "import django;print django.VERSION"( ...

随机推荐

  1. Jenkins动态部署方案

    在之前一个项目开发中使用到了jenkins自动化测试,根据实际应用,简单整理了其部署方案. 1.部署 2.项目构建 3.重部署 1 部署 登录Jenkins应用管理界面 1)选中一个服务器上已在jen ...

  2. SICP 习题 (1.9) 解题总结

    SICP 习题 1.9 开始针对“迭代计算过程”和“递归计算过程”,有关迭代计算过程和递归计算过程的内容在书中的1.2.1节有详细讨论,要完成习题1.9,必须完全吃透1.2.1节的内容,不然的话,即使 ...

  3. vue-resource插件使用

    本文的主要内容如下: 介绍vue-resource的特点 介绍vue-resource的基本使用方法 基于this.$http的增删查改示例 基于this.$resource的增删查改示例 基于int ...

  4. ext.net中ComboBox空间实现模糊查询

    ComboBox中的属性添加Mode="Local"可以实现第一个字的模糊查询但是搜索中间的字无法实现 现提供一下方法使用正则表达式实现全模糊查询 <ext:ComboBox ...

  5. dispatch_group_t

    最近在写的模块有这样一个问题,要保证所有block里面的东西全都回来之后再执行某一个 例如我要做完所有的数据库操作再刷新界面,数据库的内容很多,所有用到了group  dispatch_group_t ...

  6. windows在文件夹快速打开命令行

    普通打开方式 按住shift键,在指定的文件夹上右键,会发现有"在此处打开命令行窗口"的字样,选择该项,即可打开命令行,并且路径刚好是你刚才选择的文件夹路径 管理员方式打开 修改注 ...

  7. 解决jQuery中dbclick事件触发两次click事件

    首先感谢这位小哥!http://qubernet.blog.163.com/blog/static/1779472842011101505853216/ 太长姿势了. 在jQuery事件绑定中,dbc ...

  8. SlimDX和WPF的合作应用

    1.首先定义一个DX操作类 using System; using SlimDX; using SlimDX.Direct3D9; using System.Windows.Interop; usin ...

  9. [C++程序设计]内置函数

    注意: 可以在声明函数和定义函数时同时写 inline,也可以只在其中一处声明inline,效果相同,都能按内置函数处理. 使用内置函数可以节省运行时间,但却增加了目标 程序的长度.因此一般只将规模很 ...

  10. 【Ecstore2.0】第三方信任登陆问题解决_备忘

    ECSTORE2.0的信任登陆模块开启后,需要拿着授过权的ID在官网进行配置才可以使用,但是客户的授权证书一时无法使用,而跳过认证的话功能又用不了,所以就自己临时搭了一个测试用的认证服务器和信任登陆平 ...