python基础知识(十一)web框架:Django---(一)

目录

  • 11.1Django基础命令
    • a.下载Django
    • b.创建项目
    • c.starproject创建的目录
    • d.创建应用
    • e.启动Django
  • 11.2路由控制 urls
    • a.基础使用
    • b.使用正则表达式
    • c.分发 include
    • d.反向解析

11.1Django基础命令

a.下载Django

pip3 install django //下载Django
py -m django --version //检查安装版本

b.创建项目

django-admin startproject mysite //mysite是项目名
//在windows的cmd中输入django-admin startproject project时报错:'django-admin' 不是内部或外部命令,也不是可运行的程序 或批处理文件。这是因为系统缺少django的环境变量。
首先找到Python\Scripts\django-admin.exe的位置
然后在环境变量的path中追加django-admin.exe得路径

c.starproject创建的目录

mysite/
    manage.py        //一个让你用各种方式管理 Django 项目的命令行工具。
    mysite/
        __init__.py
        settings.py  //Django 项目的配置文件
        urls.py      //Django 项目的 URL 声明,路径与视图的映射
        wsgi.py      //作为你的项目的运行在 WSGI 兼容的Web服务器上的入口

d.创建应用

python manage.py startapp app01
app01/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py    //视图函数

e.启动Django

py manage.py runserver 8080

11.2路由控制 urls

a.基础使用

from django.urls import path
from . import views

urlpatterns = [
    path('articles/2003/', views.special_case_2003),
    path('articles//', views.year_archive) //分组传参数
]
要从URL捕获值,请使用尖括号。
捕获的值可以选择包括转换器类型。例如,用于 <int:name>捕获整数参数。如果未包含转换器/,则匹配除字符之外的任何字符串。
没有必要添加前导斜杠,因为每个URL都有。例如,它articles不是/articles。

b.使用正则表达式

使用正则表达式,导入re_path()而不是path()。

from django.urls import path, re_path
from . import views

urlpatterns = [
    path('articles/2003/', views.special_case_2003),
    re_path(r'^articles/(?P[0-9]{4})/$', views.year_archive), //命名组语法
    re_path(r'^articles/(?P[0-9]{4})/(?P[0-9]{2})/$', views.month_archive)
]

在Python 正则表达式中,命名正则表达式组的语法是(?P<name>pattern),其中name 是组的名称,pattern 是要匹配的模式。
捕获的值作为关键字参数而不是位置参数传递给视图函数。

c.分发 include

from django.urls import path,include
from . import views

urlpatterns = [
    path('', main_views.homepage),
    path('app01/', include('app01.urls'))
    //路径app01/timer 先在urls中匹配app01,然后再去app01中的urls匹配剩余部分
]

d.反向解析

Django提供了用于执行URL反转的工具,这些工具匹配需要URL的不同层:
在模板中:使用url模板标记。
在Python代码中:使用该reverse()函数。
在与处理Django模型实例的URL相关的更高级代码中:该get_absolute_url()方法。

#urls
from django.urls import path
from . import views

urlpatterns = [
    path('articles//', views.year_archive, name='news-year-archive'),
]

#模板代码中
<a href="{% url 'news-year-archive' 2012 %}">2012 Archive</a>  //!!!{% url 'name'%}
{# Or with the year in a template context variable: #}
<ul>
{% for yearvar in year_list %}
<li><a href="{% url 'news-year-archive' yearvar %}">{{ yearvar }} Archive</a></li>
{% endfor %}
</ul>

#python
from django.http import HttpResponseRedirect
from django.urls import reverse

def redirect_to_year(request):
    # ...
    year = 2006
    # ...
    return HttpResponseRedirect(reverse('news-year-archive', args=(year,)))

你可能感兴趣的:(Django)