Python下有许多款不同的 Web 框架,常见的有Django,Flask,Torand,。其中Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。Django采用了MVC的框架模式,即模型M,视图V和控制器C。
一、准备工作:django和数据库的安装
在创建django项目前,有一些准备工作。1、安装python3.7,并配置到环境变量。2、安装django,在命令行执行以下命令pip install django。3、安装数据库 pip install mysqlclient pip install Pillow
(注意 1、如果出现类似“。。。。。pip install --upgrade pip”的错误,按提示执行以下命令升级pip:pip install --upgrade pip
2、如果pip install mysqlclient出现错误就下载数据库,手动安装执行命令pip install mysqlclient-1.4.4-cp37-cp37m-win_amd64.whl)
二、创建django项目netBarManageSys
以创建一个网吧管理系统为例。
1、打开cmd命令行
2、定位到要创建项目的文件夹
3、执行命令django-admin startproject netBarManageSys
执行完以上三个命令后,可以看到在我们指定的目录位置创建了一个netBarManageSys文件夹
netBarManageSys文件夹下目录结构说明
netBarManageSys:项目的容器。manage.py:一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。netBarManageSys/__init__.py:一个空文件,告诉 Python 该目录是一个 Python 包。netBarManageSys/settings.py:该 Django 项目的设置/配置。netBarManageSys/urls.py:该 Django 项目的 URL 声明; 一份由 Django 驱动的网站"目录"。netBarManageSys/wsgi.py:一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。
从命令行进入netBarManageSys路径,启动服务器python manage.py runserver
0.0.0.0 让其它电脑可连接到开发服务器,8000 为端口号。如果不说明,那么端口号默认为 8000。
在浏览器输入http://127.0.0.1:8000/,结果如下:
这是一个空的服务器什么内容都没有。我们要完善其View(及网页界面显示)、数据模型Model(即数据结构),以及一些功能逻辑跳转。
三、丰富项目内容
3.1模型 Model
3.1.1 数据库配置
创建数据库,注意编码格式,进入mysql命令行,执行以下create database netbar_manage_sys_db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
在项目的 settings.py 文件中找到 DATABASES 配置项,将其信息修改为:
DATABASES={
'default':{
'ENGINE':'django.db.backends.sqlite3',
#'NAME':os.path.join(BASE_DIR,'db.sqlite3'),
'NAME':'netbar_manage_sys_db',
'HOST':'localhost',
'PORT':'3306',
'USER':'root',
'PASSWORD':'root123',
}
}
上面包含数据库名称和用户的信息,它们与 MySQL 中对应数据库和用户的设置相同。Django 根据这一设置,与 MySQL 中相应的数据库和用户连接起来。
3.1.2 定义数据模型
Django规定,如果要使用模型,必须要创建一个app。使用startapp命令创建一个名为netBarSys 的 app:
目录结构如下
在setting文件中配置我们自己创建的app,这一步很重要,不然后面同步数据库会有问题
INSTALLED_APPS=[
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'netBarSys',#我们自己定义的app
]
打开mdels.py文件,添加我们需要的数据模型。
根据功能需要添加用户数据模型和用户信息数据模型
classUsers(models.Model):
usertype=models.IntegerField(default=0)#0-顾客,1-管理员
name=models.CharField(max_length=50)
password=models
classUserInfos(models.Model):
user=models.OneToOneField(Users,on_delete=models.CASCADE)
loginintime=models.DateTimeField('loginintime')#登录时间
lastLogouttime=models.DateTimeField('lastloginouttime')#上次登出时间
onlinetime=models.IntegerField(default=0)#在线时间单位分钟,当该值超过240,强制下线
state=models.IntegerField(default=0)#顾客状态0-offlinenormal,1-onlinenormal2forceoffline
fee=models.IntegerField(default=0)#费用
同步数据库,命令行中依次运行
python manage.py makemigrations
python manage.py sqlmigrate netBarSys 0001
python manage.py migrate
创建管理员账户
创建管理员账户,管理员是不能注册的。从命令行进入graduationDesignSys路径,依次执行以下命令
pythonmanage.pyshell
>>> from netBarSys.models import Users
>>> admin=Users(usertype=1,name='admin01',password='123456')
>>> admin.save()
3.2模板Templates和视图View
在django中,视图对WEB请求进行回应
视图接收reqeust对象作为第一个参数,包含了请求的信息
视图就是一个Python函数,被定义在views.py中
模板基本上就是一些输出动态值的经过特殊格式化的HTML文本,支持简单的逻辑结构如循环等。当一个视图要返回一个HTML文档时,它通常会指定一个模板,提供给它所要显示的信息,并在响应里使用模板渲染的结果。
在netBarSys目录下创建templates目录,这里面将存放我们的模板文件。定义base文件包含一些通用的显示设置项,其他html文件继承自它。关于html文件内容是另外的内容这里不详细赘述,只截取部分重要代码
登陆文件代码:
<!DOCTYPEhtml>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>主页</title>
<!--使用CSS样式来控制div布局-->
<styletype="text/css">
/*定义全局的div布局*/
#content{
width:100%;
height:800px;
margin:200pxauto;
}
html,body{text-align:center}
input,select{height:30px;width:200px;vertical-align:left;}
</style>
</head>
<body>
<divid=content>
<h2>AA网吧管理系统</h2>
<div>
{%formessageinmessages%}
<divclass='alertalert-{{message.tags}}'style="color:coral">{{message}}</div>
{%endfor%}
</div>
<formaction="{%url'index'%}"method="post"name='login'>{%csrf_token%}
<tablealign="center">
<tr>
<td>账户:</td>
<td><inputtype="text"id="id_username"name="username"placeholder="用户名"autofocusrequired/></td>
</tr>
<tr>
<td>密码:</td>
<td><inputtype="password"id="id_password"placeholder="密码"name="password"required/></td>
</tr>
<tr>
<td></td>
<td>
<inputtype="submit"value="登录">
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
创建视图函数实现登陆功能
在netBarSys/views.py中
defindex(request):
ifrequest.method=='POST':
name=request.POST['username']
password=request.POST['password']
#查询用户是否在数据库中
print("%s,%s,%d"%(name,password))
ifUsers.objects.filter(name=name).exists():
user=Users.objects.get(name=name)
print("%s,%s,%d"%(user.name,user.password,user.usertype))
print(user.password+",%d"%user.usertype)
ifuser.password==password:
request.session['is_login']='true'
request.session['username']='username',
ifuser.usertype==1:
response=render(request,'homepage_a.html')#跳到管理员首页界面
else:
response=render(request,'homepage.html')#跳到顾客首页界面
#setcookie
response.set_cookie('username',user.name)
returnresponse
else:
messages.add_message(request,messages.ERROR,'用户密码或身份类型错误')
returnrender(request,'index.html')
else:
messages.add_message(request,messages.ERROR,'用户不存在')
returnrender(request,'index.html')
returnrender(request,'index.html')
将新视图添加进lib.urls模块里
urlpatterns=[
path('admin/',admin.site.urls),
path('index/',views.index,name='index'),
]
显示样式:
输入刚才创建的管理员的账户和密码登陆后如下图:
其他功能用同样的方法(1、创建模板(写html文件),2、实现view函数,3、将新视图添加进lib.urls模块里。)来实现
参考文档Django 创建第一个项目 | 菜鸟教程
Django 基础入门_Python - 蓝桥云课
Django中,模型(models),视图(views)和模板的区别和应用_codeksy的博客-CSDN博客
/article/165607.htm
如果觉得《python django项目创建步骤》对你有帮助,请点赞、收藏,并留下你的观点哦!