python实训day2(下)---Django 应用

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值