如果这是你第一次使用Django,你需要完成一些初始化设置。 即,你需要自己用代码来创建一个Django项目 ——一个Django实例所需的设置集合,包括数据库的配置、针对Django的配置选项和应用本身的配置选项。
在命令行(终端)中,cd(例如cd exam)到你想要用来保存代码的目录,然后运行如下命令:
$ django-admin startproject mysite
这将会在你的当前目录下生成一个 mysite目录。
如果你曾经学过普通的旧式的PHP(没有使用过现代的框架),你可能习惯于将代码放在Web服务器的文档根目录下(例如/var/www)。使用Django,你不需要这么做。 将Python代码放在你的Web服务器的根目录不是个好主意,因为它可能会产生让人们在网上看到你的代码的风险。 这样不安全。
将你的代码放置在Web服务器根目录以外的地方,例如/home/mycode。
让我们看一下startproject生成了什么:
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
这些文件是:
- 外层的mysite/根目录仅仅是项目的一个容器。它的命名对Django无关紧要;你可以把它重新命名为任何你喜欢的名字。
- manage.py:一个命令行工具,可以使你用多种方式对Django项目进行交互。 你可以在django-admin和manage.py中读到关于manage.py的所有细节。
- 内层的mysite/目录是你的项目的真正的Python包。它是你导入任何东西时将需要使用的Python包的名字(例如 mysite.urls)。
- mysite/__init__.py:一个空文件,它告诉Python这个目录应该被看做一个Python包。 (如果你是一个Python初学者,关于包的更多内容请阅读Python的官方文档)。
- mysite/settings.py:该Django 项目的设置/配置。Django 设置 将告诉你这些设置如何工作。
- mysite/urls.py:该Django项目的URL声明;你的Django站点的“目录”。 你可以在URL 路由器 中阅读到关于URL的更多内容。
- mysite/wsgi.py:用于你的项目的与WSGI兼容的Web服务器入口。 更多细节请参见如何利用WSGI进行部署。
数据库的建立¶
打开mysql命令对话框
输入 create database csvt default charset=utf8;
先找到/mysite/mysite/setting.py
修改相关内容
INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'blog', )
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'csvt', 'USER':'root', 'PASSWORD':'123456', 'HOST':'', 'PORT':'', } }
打开mysite/blog/models.py,输入如下内容
from django.db import models class Employee(models.Model): name=models.CharField(max_length=20)
同步数据库
创建完成后,在项目文件夹启动Django自带的web服务器。Django会自动检查配置文件中的错误,如果全部正常则顺利启动:
Validating models…
Performing system checks…
System check identified no issues (0 silenced).
You have unapplied migrations; your app may not work properly until they are applied.
Run ‘python manage.py migrate’ to apply them.
June 01, 2015 – 00:00:00
Django version 1.8.2, using settings ‘mysite.settings’
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
访问http://127.0.0.1:8000,如果顺利显示,说明Django已经安装成功了。但现在只有本机可以访问,要让外网能够访问,或是要更换默认的8000端口,可以执行命令:
这样就将端口修改为8080,且外网也可以通过IP访问本机上的Django。
注意红字部分提示还没有执行migrate。这是1.7版本加入的数据库迁移工具,执行:
可以看到Django创建了身份认证(auth)相关的表,默认是sqlite数据库,所以项目文件夹下会生成db.sqlite3这个文件。
现在要让Django支持MySQL数据库。编辑配置文件(mysite/mysite/settings.py)。找到DATABASES的配置,当前版本是在77行,默认是sqlite,把它改成MySQL:
1
2
3
4
5
6
7
8
9
10
|
DATABASES
=
{
'default'
:
{
'ENGINE'
:
'django.db.backends.mysql'
,
#设置为mysql数据库
'NAME'
:
'dmyz'
,
#mysql数据库名
'USER'
:
'root'
,
#mysql用户名,留空则默认为当前linux用户名
'PASSWORD'
:
'root'
,
#mysql密码
'HOST'
:
''
,
#留空默认为localhost
'PORT'
:
''
,
#留空默认为3306端口
}
}
|
代码的中文注释,在不指定Python文件编码的情况下会引起SyntaxError,所以不要复制这些中文注释。下文的中文注释同理。
Django(Python)操作MySQL依赖第三方包,所以要先安装MySQL for Python。
$ unzip MySQL-python-1.2.5.zip
$ sudo python setup.py install
可能会提示EnvironmentError: mysql_config not found。因为没有安装开发工具包,所以找不到mysql_config文件,执行:
安装模块后再次执行migrate命令,如果相关的模块/库都正确安装,Django会创建下列表:
+—————————-+
| Tables_in_dmyz |
+—————————-+
| auth_group
| auth_group_permissions
| auth_permission
| auth_user
| auth_user_groups
| auth_user_user_permissions
| django_admin_log
| django_content_type
| django_migrations
| django_session
+—————————-+
10 rows in set (0.00 sec)
URL
现在首页还是默认内容。Django会通过URL配置文件来查找相应的对象,URL地址使用正则表达式设置。在mysite/mysite目录下可以找到urls.py文件,它是URL配置的默认起点,修改这个文件增加首页的配置:
1
2
3
4
5
6
7
8
9
|
from
django
.
conf
.
urls
import
include
,
url
from
django
.
contrib
import
admin
from
.
import
views
#引入views
urlpatterns
=
[
url
(
r
'^admin/'
,
include
(
admin
.
site
.
urls
)
)
,
url
(
r
'^$'
,
views
.
home
)
,
#增加一条URL规则,r'^$'表示首页(/)
]
|
在mysite/mysite文件夹下新建views.py文件,内容如下:
1
2
3
|
from
django
.
http
import
HttpResponse
def
home
(
request
)
:
return
HttpResponse
(
'hello, world'
)
|
刷新网站首页,看到已经输出了”hello, world”。