django框架学习
一,前提准备:
1,安装好python
2,下载安装好pycharm专业版(安装过程中,使用前将代码:0.0.0.0 account.jetbrains.com
0.0.0.0 www.jetbrains.com 添加到hosts文件中(hosts文件路径 C:\Windows\System32\drivers\etc)阻止联网)
二,利用pycharm创建django工程
1,启动pyharm,创建django工程
点击file->New Project 创建mydjango工程,并且创建myweb项目:
创建成功后,还有默认文件,如下图所示:
2,启动mydjango测试
3,启动浏览器,输入:http://localhost:8000/ 看到以下信息,说明django启动成功!!!
三,django连接mysql数据库
1,链接数据库之前,先准备好mysql数据库。所用到的数据库是本机上创建的mzd-djg数据库(用xampp和navicat)
2,设置数据库链接,找到工程目录下的settings.py文件,并打开,找到DTABASE,修改代码为:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 数据库驱动
'NAME': 'mzd-djg', # 数据库名
'USER': 'root', # 用户名
'PASSWORD': '', # 密码
'HOST': '127.0.0.1', # 数据库地址
'PORT': '3306' # 链接数据端口
}
}
3,工程加载数据库,找到工程目录下__init__.py文件,并打开后,添加以下代码:
import pymysql
pymysql.install_as_MySQLdb()
添加后,显示有错,是因为你的工程没有添加mysql驱动
4,添加mysql驱动
找到 file->settings,找到PyMySql,而不是pymysql。
安装完成后,看到以下信息,说明安装成功。
导入成功后,启动工程测试。测试时有两个错误,错误原因一个是因为django工程版本与mysql驱动版本问题,只要将版本提示注释掉即可。点击打开错误提示的base.py文件,并将版本注释。另一个错误要修改operations.py文件内容为query = query.encode(errors=‘replace’)。
5,再次启动测试,看到以下界面,说明mysql成功连接。
四,创建数据库表模型
点击myweb项目下的models.py,点击打开,将以编写第一个用户表的模型myweb_user,对应的是数据库表。
注:django框架数据库表有他自己的命名规则,一般情况下表的名称是:项目名称_表名称。例如myweb_user,myweb是你的项目名称,user对应的是你的类名。
五,为数据库创建表,并同步数据
1,右键点击mydjango工程,找到打开open in Terminal,
2,创建同步文件,输入:python manage.py makemigrations
3,创建表结构并同步到数据库,输入:python manage.py migrate
4,以上步骤完成后,打开数据库查看,将会多了很多表,其中有一张是刚刚写的user类生成的表(myweb_user),其他表都是框架自己的表。
六,编写从myweb_user获取数据,并显示到页面上
1、在myweb下的views.py编写业务代码,添加以下代码:
from django.shortcuts import render
from myweb.models import User
# Create your views here.
#页面查询用户信息
def queryUsers(request):
#到数据库查询用户信息
us = User.objects.all()
#将数据发给页面
context = {"ls": us}
return render(request, "users.html", context)
2,编写页面users.html 选择工程项目找到templates,右键新建new-html file
然后编写以下代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Users</title>
</head>
<body>
<table border="1">
<thead>
<tr>
<th>ID</th>
<th>名称</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{% for row in ls %}
<tr>
<td>{{ row.id }}</td>
<td>{{ row.username }}</td>
<td>
<a href="#?nid={{ row.id }}">删除</a>
|
<a href="#?nid={{ row.id }}">编辑</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</body>
</html>
3、添加访问路径,打开urls.py,编写以下代码:
from django.contrib import admin
from django.urls import path
from myweb import views
urlpatterns = [
path('admin/', admin.site.urls),
path('users/', views.queryUsers),
]
4、启动项目,成功后看到如图所示:
5、测试
打开浏览器输入:http://localhost:8000/users/,将会看到如图页面:
看到以上页面,说明已经成功!!
表中什么数据都没有,可以手动添加数据到数据库中,这里我添加了小明,小康相关的两条信息到myweb_user表中,之后刷新浏览器页面显示如图所示:
七,django+mysql实现增删查改功能
1,编写增删查改功能代码
打开项目myweb目录下view.py,并编写以下代码:
from django.shortcuts import render, redirect
from myweb.models import User
# Create your views here.
#页面查询用户信息
def queryUsers(request):
# 到数据库查询用户信息
us = User.objects.all()
# 将数据发给页面
context = {"ls": us}
return render(request, "users.html", context)
# 打开添加页面
def openAdd(request):
return render(request, "userAdd.html")
# 保存数据
def saveUser(request):
username = request.GET.get('username')
password = request.GET.get('password')
User.objects.create(username=username, password=password)
return redirect("/myweb/queryUsers")
#打开修改页面
def openEdit(request):
id = request.GET.get('id')
# 到数据库查询用户信息
m = User.objects.filter(id=id).first()
# 将数据发给页面
context = {"m": m}
return render(request, "userEdit.html", context)
#更新数据
def updateUser(request):
id = request.GET.get('id')
username = request.GET.get('username')
password = request.GET.get('password')
User.objects.filter(id=id).update(username=username, password=password)
return redirect("/myweb/queryUsers")
#删除数据
def deleteUser(request):
id = request.GET.get('id')
User.objects.filter(id=id).delete()
return redirect("/myweb/queryUsers")
2,编写html页面
在工程目录下的templates新建三张页面:
users.html在原来页面的基础上添加如图相应代码即可:
userAdd.html代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>注册</title>
</head>
<body>
<form action="/myweb/saveUser" method="GET">
{% csrf_token %}
账号:<input name="username"><br>
密码:<input name="password"><br>
<input type="submit" value="添加">
</form>
</body>
</html>
userEdit.html代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>注册</title>
</head>
<body>
<form action="/myweb/updateUser" method="GET">
{% csrf_token %}
<input type="hidden" name="id" value="{{ m.id }}">
账号:<input name="username" value="{{ m.username }}"><br>
密码:<input name="password" value="{{ m.password }}"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
3,设置路由。在工程目录下,找到urls.py,修改代码:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('myweb/', include('myweb.adminurls')),
]
然后在myweb项目下新建adminurls.py,并编写代码:
from django.urls import path
from myweb import views
urlpatterns = [
path('', views.queryUsers),
path('queryUsers/', views.queryUsers),
path('openUserAdd/', views.openAdd),
path('saveUser/', views.saveUser),
path('openEdit/', views.openEdit),
path('updateUser/', views.updateUser),
path('deleteUser/', views.deleteUser),
]
4,启动工程,测试
启动完成后,打开浏览器输入:http://localhost:8000/myweb/,显示如图:
点击添加,随便添加几条数据后,数据显示如图:
点击删除,删除相应的数据。
点击编辑,跳转到编辑状态,自己可以作编辑提交信息。