闵孝林,幽默笑话小故事,下载电影的网址
pip3 install django
pip3 uninstall django
# django-admin startproject 创建的项目名 django-admin startproject mywebsite
# 运行时需要进入到django目录 python manage.py runserver
# python manage.py startapp 应用名称 python manage.py startapp news
# 在项目下的settings文件中进行注册 # 在installed_apps中增加需要注册的应用名,如上news
# 在项目下的settings文件中进行设置 # language_code = 'en-us' language_code = 'zh-hans'
python manage.py createsuperuser
主要封装数据库,对数据库进行访问,对数据进行增删改查。
进行业务逻辑处理
主要进行展示
protocol://hostname[:port]/path/[:parameters][?query]#fragment
path(<route>, <view>, [name=none], [**kwargs])
path('alexlu/eva/<html>', views.web, name='web'), # 其中<html>为传递给函数views.web的参数
<str:html>
匹配一个非空字符及,除去 ’/‘ ,默认使用的是这种方式<int:html>
匹配0或正整数<slug:html>
由ascii字母或数字组成,通过 ’-‘ 链接的字符串<uuid:html>
uuid格式的字符串<path:html>
匹配一个非空字符串,包括 ’/‘path('index/<str:html>', views.index, name='index'), path('index/<path:home>', views.home, name='home'), path('page/<int:page>', views.page, name='page'), path('index/<int:numa>/<int:numb>', views.sum, name='sum'), path('slug/<slug:slugstr>', views.slugstr, name='slugstr'), path('uuid/<uuid:uuid>', views.uuid, name='uuid'), # --------------------------------------------------------------------- def index(request, html): return httpresponse(html) def home(request, home): return httpresponse('<h1>{}</h1>'.format(home)) def page(request, page): return httpresponse('<h1>{}</h1>'.format(page)) def sum(request, numa, numb): return httpresponse('<h1>{}</h1>'.format(numa+numb)) def slugstr(request, slugstr): return httpresponse('<h1>{}</h1>'.format(slugstr)) def uuid(request, uuid): return httpresponse('<h1 >{}</h1>'.format(uuid))
redirect(to, permanent=false, *args, **kwargs)
reverse(viewname, urlconf=none, args=none, kwargs=none, current_app=none)
httpresponse(content, content_type=none, status=none, charset=none, reason=none *args, **kwargs)
require_http_methods([mthods_list])
标准语法:
render(<request>, <template_name>, context=none, content_type=none, status=none, using=none)
必选参数
可选参数
# 检查是否安装mysql ps -aux | grep 'mysql' # 安装服务端 sudo apt-get install mysql-server # 安装客户端 sudo apt-get install mysql-client # 启动服务 sudo service mysql start # 停止服务 sudo service mysql stop # 重启服务 sudo service mysql restart # 进入数据库 sudo mysql -uroot -p
# 进入管理员模式 alexlu@alexlu-ubuntu:~$ sudo su # 进入mysql root@alexlu-ubuntu:/home/alexlu# mysql # 查看用户权限 mysql> select user,plugin from mysql.user; # 更新root用户密码(此处密码设为‘root’) mysql> update mysql.user set authentication_string=password('root'),plugin='mysql_native_password'; # 刷新设置 mysql> flush privileges; # 退出mysql与root用户 mysql> exit; root@alexlu-ubuntu:/home/alexlu# exit # 重启数据库服务 alexlu@alexlu-ubuntu:~$ sudo service mysql restart # 尝试重新登陆(前面不加sudo) alexlu@alexlu-ubuntu:~$ mysql -uroot -proot
# 展示当前数据库: mysql> show databases; # 创建数据库(django为数据库名称)-此处未设置中文编码 mysql> create database django; # 查看创建的数据库 mysql> show create database django; # 删除数据库 mysql> drop database django; # 创建支持中文编码的数据库 mysql> create database django charset='utf8';
# 查看当前使用的数据库 mysql> select database(); # 选择使用的数据库 mysql> use django_alexlu; # 创建表 mysql> create table students( -> id int primary key auto_increment not null, -> name varchar(20), -> age int default 20 -> ); # 显示创建的表 mysql> show create table students; # 显示表结构 mysql> desc students; # 显示已创建的表 mysql> show tables; # 向表中插入数据 mysql> insert into students(name,age) values('tom', 22); # 查询表中的数据 mysql> select * from students;
# 在django的settings.py文件中对databases进行设置 databases = { 'default': { # 'engine': 'django.db.backends.sqlite3', # 'name': os.path.join(base_dir, 'db.sqlite3'), 'engine': 'django.db.backends.mysql', 'name': 'django_alexlu', 'user': 'root', 'password': 'root', 'host': 'localhost', 'port': 3306 } }
pip install pymysql
# 在django项目下的__init__.py中进行设置 import pymysql pymysql.install_as_mysqldb()
django.core.exceptions.improperlyconfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
# 安装libmysqlclient-dev sudo apt-get install libmysqlclient-dev # 安装mysqlclient pip install mysqlclient # 修改django项目下的__init__.py(去掉上面第3步增加的两行内容)改为: import mysqldb
# ubuntu sudo apt-get install libmysqlclient-dev # centos yum install python-devel mysql-devel
# 生成迁移文件 python manage.py makemigrations # 将迁移文件映射到数据库中 python manage.py migrate # 如需强制迁移需要在上方命令后面加上 应用名
# 在app下的admin.py中进行设置 from django.contrib import admin from .models import articles admin.site.register(articles)
# 在app文件下的admin.py中进行设置 from django.contrib import admin from .models import articles class aritclesadmin(admin.modeladmin): list_display = ['id', 'title', 'content', 'author'] admin.site.register(articles, aritclesadmin)
# 修改app下的模型文件models.py,在字段创建时设置中文名称 class articles(models.model): title = models.charfield('标题', max_length=20) author = models.charfield('作者', max_length=20) content = models.textfield('内容')
class students(models.model): choices = [ ('male', '男'), ('female', '女') ] name = models.charfield(verbose_name='姓名', max_length=20, unique=true) age = models.charfield(verbose_name='年龄', max_length=10) gender = models.charfield(verbose_name='性别', max_length=10, choices=choices, default='male') is_deleted = models.booleanfield(default=false) introduce = models.textfield(verbose_name='自我介绍')
# 在app下的模型文件models.py中进行设置 class articles(models.model): title = models.charfield('标题', max_length=20) author = models.charfield('作者', max_length=20) content = models.textfield('内容') def __str__(self): return self.title class meta: verbose_name_plural = '新闻列表' verbose_name = '新闻'
# 在模型定义下的meta子类中增加ordering字段进行设置 class meta: verbose_name_plural = '用户列表' verbose_name = '用户' ordering = ['age', '-name'] # ordering = ['-id']
# 同样是在mate子类中增加db_table字段进行设置 class meta: verbose_name_plural = '用户列表' verbose_name = '用户' ordering = ['age', '-name'] db_table = 'students'
# 在视图views定义中,通过context传递给需要渲染的html from django.shortcuts import render from .models import students # create your views here. def index(request): student_list = students.objects.all() # 此处为获取表中所有数据 context = { 'students': student_list } return render(request, '', context)
# 在模板templates下的中进行展示 <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>title</title> </head> <body> {% for student in students %} <h1>{{ student.name }}——{{ student.age }}</h1> {% endfor %} </body> </html>
# 在视图views定义中,通过context传递给需要渲染的html from django.shortcuts import render from .models import magnate # create your views here. def index(request): context = { 'result': magnate.objects.get(pk=1) # 此处查询的值必须是唯一的 } return render(request, '', context)
# 在模板templates下的中进行展示 <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>title</title> </head> <body> <h1>{{ result.name }}</h1> <h1>{{ result.age }}</h1> <h1>{{ result.gender }}</h1> <h1>{{ result.assets }}</h1> <h1>{{ result.company }}</h1> </body> </html>
# 在视图views定义中,通过context传递给需要渲染的html from django.shortcuts import render from .models import magnate # create your views here. def index(request): context = { 'female_list': magnate.objects.filter(gender='female') # 'male_list': magnate.objects.exclude(gender='female') } return render(request, '', context)
# 在模板templates下的中进行展示 <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>title</title> </head> <body> {% for female in female_list %} <h1>{{ female.name }}——{{ female.assets }}</h1> {% endfor %} </body> </html>
# 在视图views定义中,通过context传递给需要渲染的html from django.shortcuts import render from .models import magnate # create your views here. def index(request): magnates = magnate.objects.all().filter(gender='male').filter(assets=2125) context = { 'male_list': magnates } return render(request, '', context)
# 在模板templates下的中进行展示 <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>title</title> </head> <body> {% for male in male_list %} <h1>{{ male.name }}——{{ male.assets }}</h1> {% endfor %} </body> </html>
# 在视图views定义中,通过context传递给需要渲染的html from django.shortcuts import render from .models import magnate # create your views here. def index(request): magnates = magnate.objects.filter(gender='male').order_by('-age') context = { 'magnates': magnates } return render(request, '', context)
# 在模板templates下的中进行展示 <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>title</title> </head> <body> {% for magnate in magnates %} <h1>{{ magnate.name }}——{{ magnate.gender }}——{{ magnate.age }}</h1> {% endfor %} </body> </html>
# 在视图views定义中,通过context传递给需要渲染的html from django.shortcuts import render from .models import magnate # create your views here. def index(request): magnates = magnate.objects.values('name', 'assets') context = { 'magnates': magnates } return render(request, '', context)
# 在模板templates下的中进行展示 <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>title</title> </head> <body> {% for magnate in magnates %} <h1>{{ magnate.name }}——{{ magnate.gender }}——{{ magnate.age }}</h1> {% endfor %} </body> </html>
# views视图中filter括号中使用模糊匹配的字段即可 magnates = magnate.objects.filter(company__startswith='阿里')
# views视图中filter括号中使用 字段名__in 即可 results = magnate.objects.filter(age__in=[45, 58, 50])
# views视图中filter括号中使用范围查询的字段即可 results = magnate.objects.filter(age__range=(20, 45))
# views视图中filter括号中使用条件判断的字段即可 results = magnate.objects.filter(assets__gt=1000)
# 在视图views定义中,通过create设置需要插入的数据 magnate.objects.create(name='alexlu', age=50, gender='male', assets=666, company='创慧弘', introduce='chh co., ltd.')
# 在视图views定义中,通过count进行统计 from django.shortcuts import render from .models import magnate # create your views here. def index(request): magnates = magnate.objects.filter(gender='male').count() context = { 'count': magnates } return render(request, '', context)
# 在模板templates下的中进行展示 <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>title</title> </head> <body> <h1>{{ count }}</h1> </body> </html>
# 需要在视图中导入相关统计函数 from django.db.models import count, sum, avg, max, min # 在视图中统计时通过aggregate进行调用 results = magnate.objects.aggregate(count('name'), sum('assets'), avg('assets'), max('assets'), min('assets'))
{'name__count': 10, 'assets__sum': 14446, 'assets__avg': 1444.6, 'assets__max': 2387, 'assets__min': 400}
# 在应用下创建forms.py from django import forms class registerforms(forms.form): user_name = forms.charfield(min_length=8, max_length=20, label='用户名', initial='请输入您的手机号/密码') password = forms.charfield(widget=forms.passwordinput, min_length=8, max_length=16, label='密码', help_text='密码为8-16位数字字母组合') repassword = forms.charfield(widget=forms.passwordinput, min_length=8, max_length=16, label='确认密码') age = forms.integerfield(min_value=18, max_value=100, label='年龄') # age = forms.field(widget=forms.numberinput, label='年龄') email = forms.emailfield(label='邮箱', disabled=true) phone = forms.charfield(max_length=11, label='手机号码', label_suffix=':(+86)') introduce = forms.charfield(label='自我介绍', widget=forms.textarea)
# 在应用下的views.py中进行创建 from django.shortcuts import render from .forms import registerforms from django.views import view class indexforms(view): def get(self, request): forms = registerforms() return render(request, '', {'forms': forms})
# 在应用下的urls.py中进行配置 urlpatterns = [ path('', views.indexforms.as_view(), name='form'), ]
{# 在应用下templates中创建进行编写 #} <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>title</title> </head> <body> <form action="" method="post"> <table> {{ forms.as_table }} {#渲染成表格#} <tr> <td><input type="submit" value="确认登陆" name="submit"></td> </tr> </table> </form> <hr> <form action="" method="post"> <div> {{ forms.as_p }} {#渲染成段落#} <td><input type="submit" value="确认登陆" name="submit"></td> </div> </form> <hr> <form action="" method="post"> <div> {{ forms.as_ul }} {#渲染成标签#} <td><input type="submit" value="确认登陆" name="submit"></td> </div> </form> </body> </html>
{# 直接在文件中增加样式 #} {# 在<head>标签中增加<style>标签设置相应控件的样式 #} <style> #id_username{ border-radius: 5px; } </style>
# 在表单文件forms.py中为控件绑定样式类 from django import forms class registerforms(forms.form): username = forms.charfield(min_length=8, max_length=20, label='用户名', initial='请输入您的手机号/密码', widget=forms.textinput(attrs={'class': 'custom-forms'})) password = forms.charfield(widget=forms.passwordinput(attrs={'class': 'custom-forms'}), min_length=8, max_length=16, label='密码', help_text='密码为8-16位数字字母组合') repassword = forms.charfield(widget=forms.passwordinput(attrs={'class': 'custom-forms'}), min_length=8, max_length=16, label='确认密码') age = forms.integerfield(min_value=18, max_value=100, label='年龄', widget=forms.textinput(attrs={'class': 'custom-forms'})) # age = forms.field(widget=forms.numberinput, label='年龄') email = forms.emailfield(label='邮箱', disabled=true, widget=forms.textinput(attrs={'class': 'custom-forms'})) phone = forms.charfield(max_length=11, label='手机号码', label_suffix=':(+86)', widget=forms.textinput(attrs={'class': 'custom-forms'})) introduce = forms.charfield(label='自我介绍', widget=forms.textarea(attrs={'class': 'custom-forms-textarea'}))
{# 在<head>标签中增加<style>标签设置控件对应样式类的属性 #} <style> .custom-forms{ border-radius: 5px; } .custom-forms-textarea{ border-radius: 15px; } </style>
# 直接在表单文件form.py中定义控件时设置 from django import forms class registerforms(forms.form): choices_item = [ (1, '男'), (2, '女'), (3, '保密') ] # 下拉列表 gender = forms.choicefield(label='性别', choices=choices_item, nitial=3) # 单选 gender2 = forms.choicefield(label='性别', choices=choices_item, widget=forms.radioselect, initial=2) # 复选 gender3 = forms.multiplechoicefield(label='性别', choices=choices_item, widget=forms.checkboxselectmultiple, initial=1)
from django import forms class registerforms(forms.form): formats = [ '%y-%m-%d', # '2019-6-30' '%m/%d/%y', # '06/30/2019' '%m/%d/%y', # '06/30/19' ] # 日期输入框 birthday = forms.datefield(label='出生日期', input_formats=formats) year_list = [ 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 ] # 日期选择框 birthday2 = forms.datefield(label='出生日期', input_formats=formats, widget=forms.selectdatewidget(years=year_list))
# 在应用下的views.py中的控件类视图中通过forms.is_valid()进行验证 from django.shortcuts import render, httpresponse from .forms import registerforms from django.views import view class indexforms(view): def get(self, request): forms = registerforms() return render(request, '', {'forms': forms}) def post(self, request): forms = registerforms(request.post) if forms.is_valid(): birthday = forms.cleaned_data.get('birthday') return render(request, 'home.html', {'birthday': birthday}) else: return httpresponse('<h1>对不起,您输入的出生日期有误~!</h1>')
{# 可通过home.html获取数据并展示 #} <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>欢迎登陆django后台管理系统</title> </head> <body> <h1>{{ birthday }}</h1> </body> </html>
# django项目的应用下的forms.py from django import forms class registerforms(forms.form): choices_item = [ (1, '男'), (2, '女'), (3, '保密') ] hobbies = [ (1, '足球'), (2, '篮球'), (3, 'python') ] year_list = [ 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 ] username = forms.charfield(min_length=8, max_length=20, label='用户名', initial='请输入您的手机号/密码', widget=forms.textinput(attrs={'class': 'custom-forms'})) password = forms.charfield(widget=forms.passwordinput(attrs={'class': 'custom-forms'}), min_length=8, max_length=16, label='密码', help_text='密码为8-16位数字字母组合') repassword = forms.charfield(widget=forms.passwordinput(attrs={'class': 'custom-forms'}), min_length=8, max_length=16, label='确认密码') gender = forms.choicefield(label='性别', choices=choices_item, nitial=3) age = forms.integerfield(min_value=18, max_value=100, label='年龄', widget=forms.numberinput(attrs={'class': 'custom-forms'})) birthday = forms.datefield(required=false, label='出生日期', widget=forms.selectdatewidget(years=year_list)) hobby = forms.multiplechoicefield(label='爱好', choices=hobbies, widget=forms.checkboxselectmultiple) introduce = forms.charfield(label='自我介绍', widget=forms.textarea(attrs={'class': 'custom-forms-textarea'}))
# 应用下的视图文件views.py中编写表单对应的类视图 from django.shortcuts import render, httpresponse from .forms import registerforms from django.views import view class indexforms(view): def get(self, request): forms = registerforms() return render(request, '', {'forms': forms}) def post(self, request): forms = registerforms(request.post) if forms.is_valid(): username = forms.cleaned_data.get('username') password = forms.cleaned_data['password'] context = { # 以字典形式处理表单数据 'datalist': { 'username': username, 'password': password, 'repassword': repassword, 'age': age, 'gender': gender, 'birthday': birthday, 'hobby': hobby, 'introduce': introduce, }, # 以列表形式处理表单数据 'datalist2': [ username, password, repassword, age, gender, birthday, hobby, introduce, ], } return render(request, 'home.html', context=context) else: return httpresponse('<h1>对不起,您输入的信息有误~!</h1>')
{# 通过home.html接收表单数据并展示 #} <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>欢迎登陆django后台管理系统</title> </head> <body> {#接收字典形式数据#} {% for k, v in datalist.items %} <h1>{{ k }}---{{ v }}</h1> {% endfor %} <hr> {#接收列表形式数据#} {% for field in datalist2 %} <h1>{{ field }}</h1> {% endfor %} </body> </html>
from django.db import models class magnate(models.model): choices = [ ('male', '男'), ('female', '女') ] name = models.charfield(verbose_name='姓名', max_length=20, unique=true) age = models.charfield(verbose_name='年龄', max_length=10) gender = models.charfield(verbose_name='性别', max_length=10, choices=choices, default='male') assets = models.integerfield(verbose_name='资产') company = models.charfield(verbose_name='公司', max_length=50) is_deleted = models.booleanfield(default=false) introduce = models.textfield(verbose_name='介绍') class meta: verbose_name_plural = '富豪榜' verbose_name = '富豪' ordering = ['id']
# 在应用下的forms.py中进行建立 from django import forms from .models import magnate class magnatesforms(forms.modelform): class meta: model = magnate # 获取全部字段 # fields = '__all__' # 指定过滤掉字段‘isdeleted’ # exclude = ['is_deleted'] # 指定获取的字段列表 fields = ['name', 'age', 'assets', 'company']
# 在应用下的views.py中进行创建 from django.shortcuts import render, httpresponse from .models import magnate from .forms import magnatesforms from django.views import view class indexmagnate(view): def get(self, request): forms = magnatesforms() return render(request, '', {'forms': forms})
{# 在应用中templates下的进行展示 #} <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>title</title> <style> .custom-forms{ border-radius: 5px; } .custom-forms-textarea{ border-radius: 15px; } </style> </head> <body> <form action="" method="post"> <div> {{ forms.as_p }} {#渲染成段落#} <td><input type="submit" value="确认登陆" name="submit"></td> </div> </form> </body> </html>
# 在项目的路由文件urls.py中通过include关联到应用路由 from django.contrib import admin from django.urls import path, include from news import urls as news_urls urlpatterns = [ path('admin/', admin.site.urls), path('', include(news_urls)), ]
# 在应用下的路由文件urls.py中将创建的模型表单视图与路径进行匹配 from django.urls import path from news import views urlpatterns = [ path('', views.indexmagnate.as_view(), name='magnate'), ]
# 直接在forms.py中的模型表单定义中增加 # 此处增加了password与repassword两个字段 from django import forms from .models import magnate class magnatesforms(forms.modelform): password = forms.charfield(widget=forms.passwordinput(attrs={'class': 'custom-forms'}), min_length=8, max_length=16, label='密码', help_text='密码为8-16位数字字母组合') repassword = forms.charfield(widget=forms.passwordinput(attrs={'class': 'custom-forms'}), min_length=8, max_length=16, label='确认密码') class meta: model = magnate # 获取全部字段 # fields = '__all__' # 指定过滤掉字段‘isdeleted’ # exclude = ['is_deleted'] # 指定获取的字段列表————可用来调整显示顺序 fields = ['name', 'gender', 'age', 'password', 'repassword', 'assets', 'company']
# 直接在forms.py中的模型表单定义下增加widgets通过字典为相应的字段绑定控件及css样式 from django import forms from .models import magnate class magnatesforms(forms.modelform): password = forms.charfield(widget=forms.passwordinput(attrs={'class': 'custom-forms'}), min_length=8, max_length=16, label='密码', help_text='密码为8-16位数字字母组合') repassword = forms.charfield(widget=forms.passwordinput(attrs={'class': 'custom-forms'}), min_length=8, max_length=16, label='确认密码') class meta: model = magnate # 获取全部字段 # fields = '__all__' # 指定过滤掉字段‘isdeleted’ # exclude = ['is_deleted'] # 指定获取的字段列表————可用来调整显示顺序 fields = ['name', 'gender', 'age', 'password', 'repassword', 'assets', 'company'] widgets = { 'name': forms.textinput(attrs={'class': 'custom-textinput'}), 'introduce': forms.textarea(attrs={'class': 'custom-textinput', 'row': 30, 'cols': 80}), }
{# 在html中为控件设定css样式 #} <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>title</title> <style> .custom-forms{ border-radius: 5px; } .custom-forms-textarea{ border-radius: 15px; } .custom-textinput{ border: 5px solid #00ff00; border-radius: 5px; } </style> </head> <body> <form action="" method="post"> <div> {{ forms.as_p }} {#渲染成段落#} <td><input type="submit" value="确认登陆" name="submit"></td> </div> </form> </body> </html>
# 利用前端知识在html中直接进行样式设置 <form action="" method="post"> <hr> <ul> <li style="list-style-type: none;"> <span style="color: #ff0000"> {{ forms.username.label }} : </span> <span> {{ forms.username }} </span> <span style="margin-left: 10px"> {{ forms.username.help_text }} </span> </li> </ul> <hr> <td><input type="submit" value="确认登陆" name="submit"></td> </form>
# 直接在模型表单定义中增加前端需要界面展示的信息,并在html中进行渲染 from django import forms from .models import magnate class magnatesforms(forms.modelform): password = forms.charfield(widget=forms.passwordinput(attrs={'class': 'custom-forms'}), min_length=8, max_length=16, label='密码', help_text='密码为8-16位数字字母组合') repassword = forms.charfield(widget=forms.passwordinput(attrs={'class': 'custom-forms'}), min_length=8, max_length=16, label='确认密码') class meta: model = magnate # 获取全部字段 # fields = '__all__' # 指定过滤掉字段‘isdeleted’ # exclude = ['is_deleted'] # 指定获取的字段列表————可用来调整显示顺序 fields = ['name', 'gender', 'age', 'password', 'repassword', 'assets', 'company'] widgets = { 'name': forms.textinput(attrs={'class': 'custom-textinput'}), 'introduce': forms.textarea(attrs={'class': 'custom-textinput', 'row': 30, 'cols': 80}), } help_texts = { 'name': '请输入中文姓名全称', } labels = { 'name': '中文姓名', }
# 连接好mysql数据库,在模型表单视图中post方法内进行数据获取和保存 from django.shortcuts import render, httpresponse from .models import magnate from .forms import magnatesforms from django.views import view class indexmagnate(view): def get(self, request): forms = magnatesforms() return render(request, '', {'forms': forms}) def post(self, request): forms = magnatesforms(request.post) if forms.is_valid(): forms.save() return httpresponse('<h1>数据保存成功!</h1>') else: return httpresponse('<h1>数据保存失败!</h1>')
以上学习笔记是根据视频教程 python之django企业开发实战 的思路进行初步整理,待内容完整后进行重新梳理。
最后感谢陈老师详细的教学视频。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Python 实现将numpy中的nan和inf,nan替换成对应的均值
python爬虫把url链接编码成gbk2312格式过程解析
网友评论