环境Windows10
python 3
pip install Django==1.11.4
验证
import django
print(django.get_version())
创建项目
django-admin startproject HelloWorld
项目结构
.
|-- HelloWorld
| |-- __init__.py
| |-- settings.py
| |-- urls.py
| `-- wsgi.py
`-- manage.py
目录说明
- HelloWorld: 项目的容器,可以是任何名字。
- manage.py: 命令行工具,用于与 Django 项目进行交互。
- 内部HelloWorld: 项目真正的python包,名称用于import。
- HelloWorld/__init__.py: 一个空文件,告诉 Python 该目录是一个 Python 包。
- HelloWorld/settings.py: 项目的配置。
- HelloWorld/urls.py: 项目的URL 声明; 一份由 Django 驱动的网站"目录"。
- HelloWorld/wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,用于运行项目。
启动服务器
热部署,改动代码不需要再重启服务器:
python manage.py runserver 0.0.0.0:8000
编写视图和URL配置
新建view.py(一般为views.py这里已经截图了就不改了),修改urls.py
用eclipse的pydev插件开发Django项目
pydev安装参见博文:Tensorflow00-新篇章
pip安装Django后sites-packages中有相关目录则打开eclipse后会自动更新PYTHON_PATH
安装mysql
下载Installer:https://dev.mysql.com/downloads/installer/
至少选择server进行安装,最好安装图形界面workbench
配置server,保持默认,只需设置root的密码即可
要使用模型需要建立app
在manage.py所在目录下执行
django-admin startapp app1
现在整个文件结构为
.
|-- HelloWorld
| |-- __init__.py
| |-- settings.py
| |-- urls.py
| `-- wsgi.py
|-- app1
| |-- migrations
| | |-- __init__.py
| |-- __init__.py
| |-- admin.py
| |-- apps.py
| |-- models.py
| |-- tests.py
| |-- views.py
`-- manage.py
在settings.py中注册应用
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app1'
]
在app1下新建views.py
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
return HttpResponse("Hello, world -- this is app1")
在app1下修改urls.py
from django.conf.urls import url
from . import views
urlpatterns=[
url(r'^$',views.index,name='index'),
]
在HelloWorld下修改urls.py
from django.conf.urls import include,url
from django.contrib import admin
from . import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^hello/', view.hello),
url(r'^app1/', include('app1.urls'))
]
include()
允许引用其他url配置。不能用$表示字符匹配结束,但会认为url中/是结束,于是匹配所有符合的url例如"app1.urls",就会查找/app1/,/hi_app1/、/hi/app1/等路径。但admin.site.urls不需要放在include()中。
url()
regex(必须),表示regualr expression,url的模式匹配。正则表达式不查找GET和POST的参数或域名。
view(必须),当Django找到一个正则表达式的匹配,就调用特殊的view函数,将一个HttpRequest对象作为第一个参数,将正则表达式“捕捉”到的值作为第二个参数。如果regex使用简单捕捉,值就以位置参数的形式传输,如果使用名称捕捉,值就以关键字参数的形式传输。
kwargs,随意的关键字都可以用字典的方式传输到目标view。
name,命名url,可以明确地在其他地方(尤其是模板中)引用url。
运行命令
python manage.py shell
可以用python shell来交互式地使用Django提供的API。这条命令加上manage.py设置环境变量DJANGO_SETTINGS_MODULE,告诉Djangosettings.py的导入路径。
如果不使用manage.py,只要设置这个环境为settings.py,然后启动一个空的Python shell,设置Django:
import django
django.setup()
在Linux上安装mysql和部署apache2并启动参见博文:用apache2部署Django应用
https://www.djangoproject.com/download/
https://docs.djangoproject.com/en/1.11/intro/install/
http://www.runoob.com/django/django-first-app.html
https://stackoverflow.com/questions/13281771/no-module-named-django-core-when-creating-project-in-virtualenv
http://www.pydev.org/manual_adv_django.html
http://zmrenwu.com/post/2/
https://docs.djangoproject.com/en/1.11/intro/tutorial01/