自从接触python到现在也有段时间了,但是一直没有玩儿过Django,最近群里有些朋友经常会提问到django相关的一些东西,所以今天来试玩儿一下,没打算达到多么精通的地步(本身就是学着玩儿)。
简介
Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的软件设计模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。
Django的主要目标是使得开发复杂的、数据库驱动的网站变得简单。Django注重组件的重用性和“可插拔性”,敏捷开发和DRY法则(Don't Repeat Yourself)。在Django中Python被普遍使用,甚至包括配置文件和数据模型。
Django 于 2008年6月17日正式成立基金会。
安装
tar xzvf Django-1.5.2.tar.gz
cd Django-1.5.2
sudo python setup.py install
pip install Django==1.5.2
>>>import django
>>>print(django.get_version())
1.5.2
初步试用
新建项目
django-admin.py startproject ericblog
ericblog/
manage.py
ericblog/
__init__.py
settings.py
urls.py
wsgi.py
这些文件是:
- 外层 ericblog/ 目录只是你项目的一个容器。对于 Django 来说该目录名并不重要; 你可以重命名为你喜欢的。
- manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。 你可以在 django-admin.py and manage.py 中查看关于 manage.py 所有的细节。
- 内层 ericblog/ 目录是你项目中的实际 Python 包。该目录名就是 Python 包名,通过它你可以导入它里面的任何东西。 (e.g. import mysite.settings).
- ericblog/__init__.py: 一个空文件,告诉 Python 该目录是一个 Python 包。(如果你是 Python 新手,请查看官方文档了解 关于包的更多内容 。)
- ericblog/settings.py: 该 Django 项目的设置/配置。请查看 Django settings 将会告诉你如何设置。
- ericblog/urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站“目录”。请查看 URL dispatcher 可以获取更多有关 URL 的信息。
- ericblog/wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。请查看 How to deploy with WSGI 获取更多细节。
python manage.py runserver
Django默认的端口号是8000,我们在地址栏里输入localhost:8000就可以直接访问了,如下图所示:
新建App
python manage.py startapp ericblog_app
然后我们会看到生成了如下结构的一个目录:
ericblog_app/
__init__.py
models.py
tests.py
views.py
该目录包含了app的模型和视图。
配置数据库和module
class Reporter(models.Model):
full_name = models.CharField(max_length=70)
def __unicode__(self):
return self.full_name
class Article(models.Model):
pub_date = models.DateField()
headline = models.CharField(max_length=200)
content = models.TextField()
reporter = models.ForeignKey(Reporter)
def __unicode__(self):
return self.headline
接下来我们编辑一下ericblog下的settings.py,配置下数据库相关的。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': '/home/gs/blog/datas/mydata.db', # 这里是我数据库文件存放的目录,你应该替换成你自己的.
'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.
}
}
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:'django.contrib.admin',
'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
'django.contrib.admindocs',
'ericblog_app',#这里添加的是我们的app的名字
)
那么我们可以看到在INSTALLED_APPS中,我们添加了新建的应用,即ericblog_app,接下来我们来创建数据库。通过在终端中输入如下命令来完成数据库的创建:
python manage.py syncdb
划红线的两个数据库表就是我们在models.py文件中创建的,我们可以看到执行的过程以及结果,这里需要说明的是,因为我们把settings.py文件中django.contrib.admin前面的注释去掉了,所以会创建admin表,那就需要为我们的blog指定一个用户,这里大家根据提示指定即可。
配置URL路径
from django.contrib import admin
admin.autodiscover()
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
url(r'^admin/', include(admin.site.urls)),
阶段总结
通过今天的简单的试用,觉得Django学起来还是难度适中的,其实,只要你肯努力去学,都可以做的很好,在学习的过程中遇到问题一定要先思考,然后尝试自己去解决,再有就是通过搜索引擎找到问题所在也是不错的选择,最后才是占用别人的时间寻求别人的帮助,俗话不也常说呢么,靠人不如靠己。
2013年8月17日,Eric.Tang 记