安装(mac)
方法一:pip命令安装
$ pip3 install Django
指定版本:
$ pip3 install Django==3.0.8
方法二:下载源码安装
下载地址:https://www.djangoproject.com/download/
$ tar zxvf Django-3.0.8.tar.gz
$ cd Django-3.0.8
$ python3 setup.py install
方法三:从github获取
$ git clone https://github.com/django/django.git
创建项目:
网上:
$ django-admin.py startproject djangoTest
实际情况(mac):
python3 /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/bin/django-admin.py startproject djangoTest
启动服务:
$ cd djangoTest
$ python3 manage.py runserver
或
$ python3 manage.py runserver 127.0.0.1:8000
项目目录:
- djangoTest: 项目的容器。
- manage.py: 命令行工具,以各种方式与该项目进行交互。
- djangoTest/__init__.py: 空文件,表示一个 Python 包。
- djangoTest/asgi.py: ASGI 兼容的 Web 服务器的入口,以便运行项目。
- djangoTest/settings.py: 项目的配置文件。
- djangoTest/urls.py: 项目的 URL 声明,网站"目录"。
- djangoTest/wsgi.py: WSGI 兼容的 Web 服务器的入口,以便运行项目。
路由配置
配置文件:urls.py
# urls.py
from django.conf.urls import url
from . import home as v_home # 视图
url(r'^$', v_home.home)
path、re_path、include方法
- path函数语法:path(route, view, kwargs=None, name=None)
- 正则表达式的规则一般用re_path方法实现
- include方法用于导入其他模块的路由配置
# urls.py
from django.urls import include, re_path
from . import home as v_home
from . import admin as v_admin
urlpatterns = [
re_path(r'^$', v_home.home),
re_path('admin/', v_admin.index, name='Tony'),
re_path(r'^user/', include('djangoStudy.urls_user'))
]
# urls_user.py
from django.urls import re_path
from . import user as v_user
urlpatterns = [
re_path(r'user/$', v_user.index, name='Tom')
]
模板
配置路径:
- 在项目根目录下创建 templates 目录
- 在setting.py文件,修改 TEMPLATES 中的 DIRS 为 [BASE_DIR+"/templates"]
# setting.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR + '/templates'],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
渲染模板:
# home.py
from django.shortcuts import render
def home(request):
context = {} # 上下文字典
return render(request, 'home.html', context)
# urls.py
from django.urls import include, re_path
from . import home as v_home
urlpatterns = [
re_path(r'^$', v_home.home),
]
模板语法:
home.py文件:
# home.py
from django.shortcuts import render
import datetime
def home(request):
context = {
'word': 'Hello home!',
'list': ['aa', 'bb', 'cc', 'dd'],
'dict': {
'a': 11,
'b': 22
},
'size': 3421,
'time': datetime.datetime.now(),
'link': '跳转'
}
return render(request, 'home.html', context)
templates/home.html文件:
home
[word]: {{word}}
[list]: {{list}}
[list.0|first|upper]: {{list.0|first|upper}}
[dict.b]: {{dict.b}}
[word|lower]: {{word|lower}}
[word|truncatewords:"1"]: {{word|truncatewords:"1"}}
[word|truncatechars:8]: {{word|truncatechars:8}}
[word|length]: {{word|length}}
[size|filesizeformat]: {{size|filesizeformat}}
[time|date]:"Y-m-d": {{time|date:"Y-m-d"}}
[link|safe]: {{link|safe}}
[if判断]:
{% if size > 1000 %}
size > 1000
{% endif %}
[for循环]:
{% for l in list %}
- {{ l }}
{% endfor %}
[for字典循环]:
{% for k,v in dict.items %}
- ({{ forloop.counter }}|{{ forloop.counter0}}|{{ forloop.revcounter }}|{{ forloop.revcounter0}}|{{ forloop.first}}|{{ forloop.last}}) {{ k }} : {{ v }}
{% endfor %}
页面效果:
自定义语法:
静态路径配置
- 在项目根目录下创建 statics 目录
- 在 settings.py添加以下配置:
STATIC_URL = '/static/' # 路径别名
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "statics"),
]