Django 的操作
安装:
pip install Django
创建django工程
django-admin startproject mysite
python manage.py startapp blog
//urls 里添加 ,注意导入路径文件 ,在views 里添加对应的函数 def show_time():pass; urlpatterns = [ path('admin/', admin.site.urls), path('show_time/', views.show_time), //对应的文件 ]
在导入html文件的时候要注意
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR),"templates"], //此处创建一个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', ], }, }, ]
启动工程
terminal-----:python manage.py runserver 127.0.0.1:8080
需要使用jquery的时候需要创建static静态文件
//插入以下代码 // static/jquery-x.x.x.js //当时调用的时候出错了,这里使用中括号或者下面的那段,末尾加, =.=!~
STATIC_URL = '/static/' #别名,如果修改了下面static文件名字,这里不影响前端导入
STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static") //识别, ]
// STATICFILES_DIRS=(
// os.path.join(BASE_DIR,"static"),
// )
Django URL (路由系统)
//tree:urls urlpatterns=[ url(r"...",...) url(r'article/(\d{4})',views.article_year #加括号代表分组 可以取得参数,无名分组 //url(r'article/(?p<year>\d{4})',views.article_year #命名分组 ] //tree:views #无命名分组 def article_year(request,year) return HttpResponse("year:%s"%year)
以上是1.x 版本的正则表达方式,在做实验的时候本人使用的是2.x版本,竟然报错。一看文档2.x已经非常简化
url(r'article/(\d{4})',views.article_year 将改成以下
path("article/<int:year>/",views.article_year #<类型:命名>
Django默认支持以下5个转化器:
- str,匹配除了路径分隔符(
/)之外的非空字符串,这是默认的形式 - int,匹配正整数,包含0。
- slug,匹配字母、数字以及横杠、下划线组成的字符串。
- uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
- path,匹配任何非空字符串,包含了路径分隔符
注册自定义转化器 对于一些复杂或者复用的需要,可以定义自己的转化器。转化器是一个类或接口,它的要求有三点: regex 类属性,字符串类型 to_python(self, value) 方法,value是由类属性 regex 所匹配到的字符串,返回具体的Python变量值,以供Django传递到对应的视图函数中。 to_url(self, value) 方法,和 to_python 相反,value是一个具体的Python变量值,返回其字符串,通常用于url反向引用。 例子: [python] view plain copy class FourDigitYearConverter: regex = '[0-9]{4}' def to_python(self, value): return int(value) def to_url(self, value): return '%04d' % value 使用register_converter 将其注册到URL配置中: [python] view plain copy from django.urls import register_converter, path from . import converters, views register_converter(converters.FourDigitYearConverter, 'yyyy') urlpatterns = [ path('articles/2003/', views.special_case_2003), path('articles/<yyyy:year>/', views.year_archive), ... ] 使用正则表达式 如果上述的paths和converters还是无法满足需求,也可以使用正则表达式,这时应当使用 django.urls.re_path函数。 在Python正则表达式中,命名式分组语法为 (?P<name>pattern) ,其中name为名称, pattern为待匹配的模式。 之前的示例代码也可以写为: [python] view plain copy from django.urls import path, re_path from . import views urlpatterns = [ path('articles/2003/', views.special_case_2003), re_path('articles/(?P<year>[0-9]{4})/', views.year_archive), re_path('articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/', views.month_archive), re_path('articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<slug>[^/]+)/', views.article_detail), ] 这段代码和之前的代码实现了基本的功能,但是还是有一些区别: 这里的代码匹配更加严格,比如year=10000在这里就无法匹配。 传递给视图函数的变量都是字符串类型,这点和 url 是一致的。
----别名概念
//别名:添加一个学生注册 在templates 创建register.html视图 <form action="{% url 'reg' %}" method = "post">
urlpatterns=[
url(r"...",...)
//url(r'register',views.register,name="reg"), # 别名识别,就算修改了register是其他名称也不影响全局
]
def register(request):
# print(request.GET)
# print(request.GET.get("user"))
if request.method=="POST":
print("--------------------")
print(request.POST)
print(request.POST.get("user"))
return HttpResponse("success!")
return render(request,"register.html")
<form action="{% url 'reg' %}" method="post">
跳转:
redirect("/blog/login/")
浙公网安备 33010602011771号