1、创建django项目
首先在对应文件夹下输入django-admin startproject c_aisystem命令 创建名为c_aisystem的django项目
然后即可在对应文件夹生成如下所示的文件目录
2、启动django项目
在C_PROJECTS/c_aisystem/目录下使用python manage.py runserver命令,核实生成的Django项目是否能够运行。
出现如下提示,虽然有unapplied migration提示,但我们先忽略提示,随后我们会解决它,现在证明我们已经开启了Django服务。
现在我们尝试用浏览器访问http://127.0.0.1:8000/,出现如下界面即可证明开启成功。
如果你想要更改端口,使用如下命令(例如更改端口为8080):
此时访问127.0.0.1:8080即可
3、创建自己的app
在django项目创建一个名为user的app,使用 python manage.py startapp user命令。
app与project的区别:一个project可以包含多个app,一个app可以在多个project中使用。
为了创建一个它自己的顶级模块,而不是我们的c_aisystem项目子模块,因此我们应该确保我们是在和manage.py相同的目录下创建的。
此时,即可创建成功,如下图所示:
4、创建第一个视图
创建自己的第一个视图,在/user/views.py文件中写入如下代码:
from
django.http
import
HttpResponse
# Create your views here.
def
index
(
request
):
return
HttpResponse(
"Hello, world. "
)
为了在浏览器中能够得到这个视图,我们应该建立一个URL映射关系。因此我们应该新建一个url.py文件来保存URL映射关系。
然后在user/urls.py文件下输入如下代码:
from
django.urls
import
path
from
.
import
views
urlpatterns
=
[
path(
''
,views.index,
name
=
'index'
),
]
同时需要在c_aisystem/urls.py文件下使用include()指明user/对应的user.urls模块。
from
django.contrib
import
admin
from
django.urls
import
path,include
urlpatterns
=
[
path(
'admin/'
, admin.site.urls),
path(
'user/'
,include(
'user.urls'
)),
]
现在使用python manage.py runserver 命令启动,同时在浏览器中输入127.0.0.1:8000/user/观察是否成功显示View.
成功显示。
5、django与数据库连接
因为我们要使用mysql数据库,而不是django自带的sqlite数据库,因此我们需要更改c_aisystem/settings.py文件中DATABASES项中的内容:
DATABASES
=
{
'default'
: {
'ENGINE'
:
'django.db.backends.mysql'
,
#数据库类型
'NAME'
:
'c_aisystem'
,
#数据库名称
'USER'
:
'root'
,
#数据库用户名
'PASSWORD'
:
'1312463385cs.'
,
#数据库密码
'HOST'
:
'127.0.0.1'
,
#数据库主机号
'PORT'
:
'3306'
#数据库端口号
}
}
同时我们应该在c_aisystem/settings.py文件的顶端的INSTALLED_APPS项中加入我们之前新建的app user,
INSTALLED_APPS
=
[
'django.contrib.admin'
,
'django.contrib.auth'
,
'django.contrib.contenttypes'
,
'django.contrib.sessions'
,
'django.contrib.messages'
,
'django.contrib.staticfiles'
,
'user'
]
同时vscode中执行pip install mysqlclient命令保证安装好mysql服务,也要保证DATABASES项中的 'NAME': 'c_aisystem',#数据库名称 的c_aisystem数据库已经存在在了mysql中(Create database c_aisystem)。
6、创建model
然后在user/models.py文件中添加一个名为TUser继承于models.Model类的model:
from
django.db
import
models
# Create your models here.
class
TUser
(
models
.
Model
):
userId
=
models.AutoField(
primary_key
=
True
,
unique
=
True
)
#主键自增 ORM关系映射 DJango自动建表
username
=
models.CharField(
max_length
=
50
)
password
=
models.CharField(
max_length
=
50
)
7、创建model对应的映射
再使用python manage.py makemigrations创建model对应的映射:
此时/user/migration/0001_initial.py文件中将会有对应变化:
同时我们也可通过 python manage.py sqlmigrate user 0001命令查看相应的变化(此显示的语句是将要执行的,而并未真正执行):
同时也可以使用python manage.py check命令查看可能存在的错误。
8、创建model对应的表(即真正执行上述语句)
使用 python manage.py migrate命令,出现很多ok
现在去数据库验证一下:
生成了很多表,同时最后一个即为我们创建的model的表:
9、利用django直接对表进行增删改查
首先我们需要建立登录和登录之后的主界面。
在user/中新建一个templates文件夹,然后新建一个login.html文件:
<!
DOCTYPE HTML
>
<html>
<head>
<style>
*
{
margin
:
0
;
padding
:
0
;
}
div
{
height
:
30px
;
background
:
pink
}
<
/style>
</head>
<body>
<div>
</div>
<form
action
=
"/user/login"
method
=
"POST"
>
{% csrf_token %}
<!
安全机制 防止模拟登录
>
用户名:
<input
name
=
"username"
/>
密码:
<input
name
=
"password"
/>
<input
type
=
"submit"
value
=
"登录"
/>
<span
style
=
"color:red"
>
{{mes}}
</span>
</form>
</body>
</html>
然后在
user/urls.py中添加url,即把原文件内容更改为:
from
django.urls
import
path
from
.
import
views
urlpatterns
=
[
path(
'index'
, views.index),
path(
'login'
, views.login),
]
同时在user/views.py中添加def login(request)方法,即把原文件内容更改为:
from
django.shortcuts
import
render
#函数
from
django.http
import
HttpResponse
from
django.http
import
HttpResponseRedirect
from
.models
import
TUser
# Create your views here.Control层 页面跳转返回
def
index
(
request
):
return
HttpResponse(
"Hello, world. "
)
def
login
(
request
):
'''
用户登录
'''
if
request.method
==
'POST'
:
username
=
request.POST.get(
"username"
)
password
=
request.POST.get(
"password"
)
#模拟数据库查询操作
#TUser.objects.get(username=username)
#if username == 'admin' and password =='123456':
if
TUser.objects.filter(
username
=
username,
password
=
password).exists()
==
True
:
#过滤
#return HttpResponse("登录成功!")#登录成功
return
HttpResponseRedirect(
'index?mes=登录成功!'
)
#重定向 get形式传参 #重定向
else
:
return
HttpResponseRedirect(
'login?mes=账号或密码错误!'
)
#return render(request,'login.html',{'login?mes=账号或密码错误!'})
#return HttpResponse("登录失败!")
print
(username,password)
pass
else
:
mes
=
""
if
request.GET.get(
'mes'
):
mes
=
request.GET.get(
'mes'
)
return
render(request,
'login.html'
,{
'mes'
:mes})
#默认访问GET类型
然后输入
127.0.0.1:8000/user/login 进入登录界面(首先保证python manage.py runserver)
输入111、111进行登录尝试:
现在我们先在数据库中存入相应的数据再进行验证:
现在我们更改user/views.py中的index方法:
def
index
(
request
):
'''
用户主页
'''
#return HttpResponse('hello world!')
user
=
TUser()
user.username
=
'xiaogang'
user.password
=
'123'
user.save()#增加操作
# 操作对象的同时操作数据库
# user=TUser.objects.get(username='xiaogang')
# user.password =123456
# user.save()
# users=TUser.objects.raw('select * from user_tuser')
users
=
TUser.objects.all() #查询操作
return
render(request,
'index.html'
,{
'mes'
:request.GET.get(
'mes'
),
'users'
:users})
#向网页用户传参
同时在template文件夹下新建index.html文件:(首先保证python manage.py runserver)
<!
DOCTYPE HTML
>
<html>
<head>
<style>
*
{
margin
:
0
;
padding
:
0
;
}
div
{
height
:
30px
;
background
:
green
;
color
:
white
;
line-height
:
30px
}
<
/style>
</head>
<body>
<div>
{{mes}}
</div>
主页
<!
接受到传来的参数
>
{%for user in users%}
<li>
{{user.username}}
{% endfor %}
</body>
</html>
再次进行登录操作,登录成功:
在def index(request)中进行删除操作:
TUser.objects.filter(
username
=
'xiaogang'
).delete()
即
所以名为xiaogang的用户都会被删除:
更改操作
用小明 111 登录后更改成功:
miINSTALLED_AP