Web框架
环境准备
入门案例
django-admin startproject first_demo
django-admin startapp user
# 配置Mysql数据库
DATABASE = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': 'localhost',
'PORT': 3306,
'NAME': 'django',
'USER': 'root',
'PASSWORD': 'root'
}
}
# 语言
LANGUAGE_CODE = 'zh-hans'
# 时区
TIME_ZONE = 'Asia/Shanghai'
# 配置静态文件目录
STATICFILES_DIR = [
os.path.join(BASE_DIR, 'static'),
]
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('user.urls'))
]
from django.urls import path
from . import views
urlpatterns = [
path('', views.index_handler)
]
from django.shortcuts import render, HttpResponse
# Create your views here.
def index_handler(request):
return HttpResponse('hello user')
反向解析、重定向、渲染模板
1、反向解析
def index_handler(request):
detail_url = reverse('detail')
print(detail_url)
return HttpResponse('hello user')
2、重定向
# 重定向
def redirect_test(request):
return redirect("/")
3、渲染模板
# 模板渲染
def render_test(request):
return render(request, 'user_index.html', context={'name': 'Tom'})
正则接受参数
re_path(r'course/detail/(\d+)', views.re_parse_parameter_handler)
# 正则解析参数
def re_parse_parameter_handler(request, number):
return HttpResponse(number)
模板语言
注意:调用父模板中的代码:{{block.super}},上图中的super写错了
<body>
<ul>
{% for i in data %}
<li>{{ i }}</li>
{% endfor %}
</ul>
</body>
def number_page(request):
return render(request, 'number.html', context={'data': [i for i in range(10)]})
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% block header %}
<h1>这是网站的头部</h1>
{% endblock %}
{% block content %}
<h2>这是网站的内容</h2>
{% endblock %}
{% block footer %}
<h3>这是网站的底部</h3>
{% endblock %}
</body>
</html>
{% extends 'base.html' %}
{% block header %}
{# 调用父类的header#}
{{ block.super }}
新的header <br>
{% endblock %}
{#重写父类的content#}
{% block content %}
新的内容
{% endblock %}
Request和Response
<html>
<head>
<title>登录</title>
</head>
<body>
<form action="{% url 'login' %}" method="post">
{% csrf_token %}
username <input type="text" name="username"><br>
password <input type="password" name="password"><br>
hobby: Java<input type="checkbox" name="hobby" value="Java">Python<input type="checkbox" name="hobby" value="Python">
<br><br>
<input type="submit" value="提交">
</form>
</body>
</html>
def login(request):
username = request.POST.get('username', None)
password = request.POST.get('password', None)
hobby = request.POST.getlist('hobby')
print(username)
print(password)
print(hobby)
return HttpResponse('提交成功!')
模型类
1)生成迁移文件
python manage.py makemigrations
2)同步到数据库中
python manage.py migrate
django报错解决mysqlclient 1.4.0 or newer is required
import datetime
from django.db import models
# Create your models here.
class User(models.Model):
username = models.CharField(max_length=20)
password = models.CharField(max_length=20)
age = models.IntegerField()
create_time = models.DateTimeField(default=datetime.datetime.now())