django实例教程–blog(1)

这是一个手把手的实例教程,本来学习笔记一样,高手请飘过!!!

准备:
使用python27
django 1.4
操作系统 win7 64bit

第一步:
打开cmd输入命令 D:定位到D盘。
第二步: 在cmd中再输入

python D:/python27/Script/django-admin.py startproject mysite

如果项目创建成功。在D盘中应该可以看到多了一个mysite文件夹。
这个文件夹的结构应该是如下的:

mysite/
	manage.py
	mysite/
		__init__.py
		settings.py
		urls.py
		wsgi.py

为了更好地继续这个教程,我们把最外的文件夹mysite改为djangosite
也就是说改为这样的结构:

djangosite/
	manage.py
	mysite/
		__init__.py
		settings.py
		urls.py
		wsgi.py

第三步:安装后台管理系统

先连接数据库,这里我使用MySQL数据库。
先到mysite文件夹下打开settings.py文件,找到

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': '',                      # Or path to database file if using sqlite3.
        'USER': '',                      # Not used with sqlite3.
        'PASSWORD': '',                  # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
    }
}

我在phpmyadmin工具中创建了一个数据库叫django,并且我的数据库是没有密码的,所以我这样写:

我在phpmyadmin工具中创建了一个数据库叫django,并且我的数据库是没有密码的,所以我这样写:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'django',                      # Or path to database file if using sqlite3.
        'USER': 'root',                      # Not used with sqlite3.
        'PASSWORD': '',                  # Not used with sqlite3.
        'HOST': 'localhost',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
    }
}

再找到这两行,

#'django.contrib.admin',
#'django.contrib.admindocs',

把这两行前面的#号去掉。
再打开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)),

找到这几行,也把前面的#号去掉。

到了这里,先运行MySQL数据库,再打开cmd,定位到djangosite目录下,输入命令:

python manage.py runserver

运行服务器
这时如果你看到:

Validating models…

o errors found …

等字样,说明你已经成功把django服务器运行起来了。

到了这里,再打开另外一个cmd窗口,再输入命令:

python manage.py syncdb

这里会提示你是否创建一个超级用户,输入yes,再输入email,和密码,当超级用户创建成功了的时候,再到浏览器里输入http://127.0.0.1:8000/admin这时就可以进行站点管理了!

第四步:创建blog app
到了这里,是时候创建我们的blog app的时候了。
在cmd窗口中输入:

python manage.py startapp blog

如果操作成功,你会在djangosite文件夹下看到已经多了一个叫blog的文件夹,里面包含如下文件:

blog/
	__init__.py
	models.py
	tests.py
	views.py

第五步: 创建模型
打开blog文件夹下的models.py文件。创建两个模型以及注册后台的管理

from django.db import models
from blog.models import *
from django.contrib import admin

# Create your models here.

class Post(models.Model):
	title = models.CharField(max_length=64)
	pub_date = models.DateTimeField()
	author = models.ForeignKey('Poster')
	content = models.TextField()
	def __unicode__(self):
		return self.title

class Poster(models.Model):
	gender_choices = (
		('M','Male'),
		('F','Female')
	)
	name = models.CharField(max_length=30)
	email = models.EmailField()
	age = models.IntegerField()
	gender = models.CharField(max_length=1,choices = gender_choices)
	website = models.URLField()
	def __unicode__(self):
		return self.name
	class Meta:
		verbose_name = "Writer"
		ordering = ['age']

class PostAdmin(admin.ModelAdmin):
	list_display = ('title','author','pub_date')
	search_fields = ('title','author','pubdate')

class PosterAdmin(admin.ModelAdmin):
    list_display = ('name', 'email', 'website','gender')
    search_fields = ('name', 'email','age')

admin.site.register(Post, PostAdmin)
admin.site.register(Poster, PosterAdmin)

保存文件,再到cmd中输入:

python manage.py syncdb

这里再到管理后台看看,是不是看到奇迹了!在这里我们已经可以添加作者和文章了,都不用我们去创建数据库,django帮我们搞定了一切。

杜甫很忙,皮鞋很忙,我也很忙

是的,自从杜甫很忙之后,于是皮鞋也开始很忙了,高中的美女英语老师还在我空间留言:皮鞋很忙,入得厨房,出得厅堂,上得高山,涉得水塘,做得酸奶,制得胶囊……

我也有点忙,第一,这个月,我提交辞呈了。第二,最近在忙两个网站,一个是 wordpress技巧网,和另外的一个网站,这个网站还在建设中……很杯具的是wordpress技巧网,这是一个去年注册的域名,用来做过很多个不同行业的网站,结果改来改去,造成了大量的404链接,目前这个网站已经被度娘k了。作为一个seo从业者,这样使用域名算是一个非常不明智的举动,但是我还是要试试这个做,使用这个老域名,因为我想看看度娘是怎么样处理这样的网站的。

django开发项目学习笔记

乱七八糟的,随便写下来记录一下!!!
安装好python和django之后,跟到要存放代码的目录下(一般不建议放在和python代码一想的目录下,出于安全性考虑!)。

创建一个项目:

python D:/python25/django-admin.py startproject mysite

链接数据库:
在mysite下的settings.py文件中,

更改语言:

LANGUAGE_CODE = 'zh-CN'

应该使用中文的,否则在使用的时候,可能会造成中文显示有问题。

DATABASES = {
    'default': {
        'ENGINE': 'mysql',
        'NAME': 'django',
        'USER': 'root',
        'PASSWORD': '',
        'HOST': 'localhost',
        'PORT': '',
    }
}

在urls.py文件中,加入

from django.contrib import admin
admin.autodiscover()

url映射中使用

url(r'^admin/', include(admin.site.urls)),

这时候,运行django服务器:

python manage.py runserver

再链接数据库创建超级用户:

python manage.py syncdb

创建成功可以访问管理页面。

在mysite里创建一个叫blog的应用:
先进入mysite目录

python D:/python25/django-admin.py startapp blog

在mysite目录下的settings.py文件中的INSTALLED_APPS下加入mysite.blog

可以为blog创建一个urls映射关系文件,命名为urls.py,先到mysite目录下添加引入blog应用的urls,

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

再在blog下的urls.py文件下写入代码:

from django.conf.urls.defaults import patterns, include, url
urlpatterns = patterns('blog',
   (r'^/$','views.home'),

)

创建blog的models的时候,一定要在models.py文件中先引入django模型,如:

from django.db import models
class Post(models.Model):
	title = models.CharField(max_length=120)
	content = models.TextField()
	pub_date = models.DateTimeField()
	author = models.ForeignKey('Author')

	class Meta:
		get_latest_by = 'pub_date'

	def __unicode__(self):
		return self.title

为model注册一个管理模型,新建一个admin.py文件

from django.contrib import admin
from mysite.blog.models import *

class PostAdmin(admin.ModelAdmin):
	list_display = ('title','author','pub_date',)
	list_display_links = ('title','author',)
	search_fields = ('title','author',)
	list_per_page = 5
	list_filter = ('title','author','pub_date',)

class AuthorAdmin(admin.ModelAdmin):
	list_display = ('name','email')

admin.site.register(Post,PostAdmin)
admin.site.register(Author,AuthorAdmin)

Django实例教程:日程表应用

在这个系列的开始,我们将做一个日程安排应用,这个应用包含提醒,多用户等功能。

关于开发环境的安装和配置,请看官方教程。 为了更省事,这里不再讲述一些基础知识。

声明模型

通常地,开始一个新的Django项目,我们都要声明一个模型,
在这里假设我们做了一个叫todo的应用。
在创建todo应用后,在里面的models.py文件中定义一个模型:

class Item(models.Model):
name = models.CharField(max_length=60)
created = models.DateTimeField(auto_now_add=True)
priority = models.IntegerField(default=0)
difficulty = models.IntegerField(default=0)
done = models.BooleanField(default=False)

再创建admin.py输入下面的代码:

class ItemAdmin(admin.ModelAdmin):
list_display = ["name", "priority", "difficulty", "created", "done"]
search_fields = ["name"]

admin.site.register(Item, ItemAdmin)

运行程序, manage.py syncdb.创建数据库。manage.py runserver运行服务器 。

现在访问http://127.0.0.1:8000/admin/就可以添加新的日程安装,根据name, priority, defficulty, creatdd time, status状态等排序,也可以通过name搜索。 这几行代码就实现了这么多功能,不能不说是让人印象深刻的。

这是不个没有什么用的工具,如果我们想我们的应用在现实生活中有用,我们必须做一些改动。我们经常要同时输入多个日程安排,但是我们目前只能在当前的界面中使用“保存并增加另一个”按键,这真是有点麻烦。

Django实例教程:1.声明

这个教程是基于假设你已经知道一些基本的Django和Python知识,如果你没有掌握这些基础知识,请到这python教程Django官方教程去看看,学习一些基础知识。

这个教程,不仅仅只是让Django做一些事,更是一些非常有用的事。实用,简单,快速。换句话说,就是做一些你日常中可能用得上的事。

在往后的教程中,我会使用PostgreSQL数据库,如果你在使用这个数据库的时候,有任何问题,请与我联系。

64位windows7搭建django开发环境

下载python 2.7安装,我是安装到D盘下,安装后,在D盘生成一个叫python27的文件夹,
再修改环境变量,我这里是在D盘下的,所以我加入的变量就是
D:\python27;
这里再运行,cmd工具,输入python,如果没有报错就证明python已经成功安装。

再解压DJANGO到D盘的python27文件夹下,变改名,如果你要解压到其它地方也行,但是你也得把你存放DJANGO的路径也加入到系统环境变量中。为了简单,我这里是直接解压到和python安装路径相同的文件夹下。

打开cmd工具,进入D:\python27文件下,再输入:

python D:\python27\Django文件夹名\setup.py install

这里cmd自动安装,安装后,你输入:

import django
django.VERSION

如果安装成功的话,你将会看到下面的django版本信息:
(1. 3. 1. final. 0)

开始第一个Django项目

安装好Django后,在这里,我打算把项目文件新建到D盘下,打开cmd命令工具,输入:

D:
python D:\python27\django-admin.py startproject mysite

到这里,你可以在D盘下看到已经新建了一个叫mysite的文件夹,里面包含有四个py文件:

__init__.py
settings.py
urls.py
manage.py

新建一个py文件并命名为views,在里面输入下面的内容:

from django.http import HttpResponse
import datetime 

def now(request):
	return HttpResponse('hello world')

def time(request):
	now = datetime.datetime.now()
	now = '<html><body> %s .</body></html>' % now
	return HttpResponse(now)

再打开urls.py文件,在urls里面加上两个url映射:

(r'^$','views.now'),
(r'^time/$','views.time'),

到了这里,再打开cmd命令工具,进入到这个mysite文件夹下,输入下面代码运行服务器:

python manage.py runserver

如果运行成功的话,你应该会看到下面这段代码:

Validating models...

0 errors found
Django version 1.3.1, using settings 'mysite.settings'
Deverlopment server is running at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
Validating models...

这时再到浏览器中分别输入http://127.0.0.1:8000/和http://127.0.0.1:8000/time
正常的情况下,应该可以看到你想要看的内容了!

php会员系统安全登陆设计思路

<?php
include_once('mysql.class.php');
if($_POST['submit']){
	$username = str_replace(' ','',$_POST['username']);
	$sql = "select * from user_list where `username` = $username";
	$query = mysql_query($sql);
	$us = is_array($row = mysql_fetch_array($query));
	$ps = $us ? md5($_POST['password'].ALL.PS) == $row['password']:FALSE;

	if($ps){
		$_SESSION['uid'] = $row['uid'];
		$_SESSION['user_shell'] = md5($row['username'].$row['passworld'].ALL_PS);
		echo '登陆成功';
	}else{
		echo '用户名或密码错误!';
	}

}	

?>

三步实现响应式设计

当前来说,响应式设计无疑是一个很重要的事情了。如果你还不熟悉什么叫响应式设计,看看我前面发布的关于响应式设计的文章。对于新手来说,响应式设计可能会觉得有点复杂,事实上,这比你想象中的要简单。为了帮助你更快地踏上响应式设计之路,我已经发布了一些简单的教程,你可以从中学到一些关于关于响应式设计的东西。这篇教程中只要三步你将学到一些关于响应式设计的逻辑学和media queries(前提是你有CSS知识背景)。

第一步:Meta 标签

大多数手机的浏览器是以html页面的宽度作为viewport的宽度显示于屏幕上。你可以使用vewport 的meta标签去重置这个viewport的大小。下面的这个viewport标签,告诉浏览器以设备实际屏幕大小作为viewport的宽度,禁用初始的宽度。

<meta name="viewport" content="width=device-width, initial-scale=1.0">

更多关于viewport标签的介绍请看这篇文章.

在ie8或更早版本的浏览器中不支持media query功能,你可以使用方法media-queries.js
或者respond.js使ie支持media query.

<!--[if lt IE 9]>
<script src="http://css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js"></script>
<![endif]-->

第二步:HTML结构 

在这个例子中,我有一个带头部,内容容器,边栏,底部的基本html布局。头部固定高度为180px,内容窗口宽度为600像素,边栏的宽度为300像素。

第三步:Media Queries

CSS3 media query是响应式设计的核心,这是专门为响应式页面编写的,用于告诉浏览器如何对不同的窗口大小去渲染页面。

下面的的这段代码,会对小于或等于980像素窗口进行渲染。基本上,我用百分比设定容器的宽度,使得这些容器“液态化”。

/*显示屏小于或等于980像素*/
@media screen and (max-width:980px){
#pagewrap{
width:94%;
}
#content{
width:65%;
}
#sidebar{
width:30%;
}
}

对于显示屏小于或等于700像素的时候,定义#content和#sidebar为自适应宽度,清除浮动,全它们以100%宽度显示。

/*显示屏小于或等于700像素*/
@media screen and (max-width:700px){
#content{
width:auto;
float:none;
}
#sidebar{
width:auto;
float:none;
}
}

对于显示屏小于或等于480像素,重置#header的高度为自适应高度,改变h1标签字体大小到24像素,隐藏#sidebar边栏。

/*显示屏小于或等于480像素*/
@media screen and (max-width:480px){
#header{
height:auto;
}
h1{
font-size:24px;
}
#sidebar{
display:none;
}
}

你可以根据你的需要写更多的media query,我在我的演示例子中只写了三套meida query,使得演示中的布局适用于不同显示屏尺寸中浏览。上面的media query样式可以包含中常规的样式文件中也可分开写一个独立的文件。

总结

这篇教程目的是向你展示响应式设计的基本知识,如果你想更深入了解响应式的知识,请看我之前的教程:用media query做响应式设计 

作者的演示:点击这里查看

文章翻译自:http://webdesignerwall.com/tutorials/responsive-design-in-3-steps

wordpess主题在ie下向左偏移问题及解决方法

过年前遗留的下来的关于wordpress主题在ie下左移的问题,在QQ群wpjam中的Leo@Shanghai的帮助下,今天终于解决了。有这么一个说法,2012是世界末日。“朝闻道,夕死可矣!”,在世界末日到来之前,我也不怕了!哈哈!

wordpress主题在ie浏览器下(ie6、7、8、9)会出面整个页面向左偏移,我用notepad++打开源文件,发现在html头部会多出一个点。如图:

删除这个点(要连续按三下删除键才可以删除,有点奇怪),再把代码另存为到本地后,再用ie打开,则显示正常!找到了问题所在。但是为什么会有这个点呢?在chrome和firefox下却会没有!google+baidu了很多也没有找到答案!在网友Leo@Shanghai的提示下决定统一一下主题的文件格式,先是统一为utf-8,没有作用,问题依然存在。再试着统一为utf-8无bom格式。这个显示正常了!再在soso问问上找到了答案。

在Firefox早期的版本里,扩展是不能有BOM的,不过Firefox 1.5以后的版本已经开始支持BOM了。现在又发现,PHP也不支持BOM。PHP在设计时就没有考虑BOM的问题,也就是说他不会忽略UTF-8编码的文件开头BOM的那三个字符。

由于必须在在Bo-Blog的wiki看到,同样使用PHP的Bo-Blog也一样受到BOM的困扰。其中有提到另一个麻烦:“受COOKIE送出机制的限制,在这些文件开头已经有BOM的文件中,COOKIE无法送出(因为在COOKIE送出前PHP已经送出了文件头),所以登入和登出功能失效。一切依赖COOKIE、SESSION实现的功能全部无效。”这个应该就是Wordpress后台出现空白页面的原因了,因为任何一个被执行的文件包含了BOM,这三个字符都将被送出,导致依赖cookies和session的功能失效。

解决的办法嘛,如果只包含英文字符(或者说ASCII编码内的字符),就把文件存成ASCII码方式吧。用UE等编辑器的话,点文件->转换->UTF-8转ASCII,或者在另存为里选择ASCII编码。如果是DOS格式的行尾符,可以用记事本打开,点另存为,选ASCII编码。如果包含中文字符的话,可以用UE的另存为功能,选择“UTF-8 无 BOM”即可。

参考资料:http://wenwen.soso.com/z/q118420256.htm?w=wordpress++bom&spi=1&sr=5&w8=wordpress++bom&qf=20&rn=6&qs=4&ch=w.search.5

感谢Leo@Shanhai的帮助。