python django项目创建步骤

         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文件,添加我们需要的数据模型。

根据功能需要添加用户数据模型和用户信息数据模型

class Users(models.Model):

    usertype = models.IntegerField(default=0)#0-顾客,1-管理员

    name = models.CharField(max_length=50)

    password = models

class UserInfos(models.Model):

    user= models.OneToOneField(Users, on_delete=models.CASCADE)

    loginintime=models.DateTimeField('login in time')#登录时间

    lastLogouttime=models.DateTimeField('last login out time')#上次登出时间

    onlinetime=models.IntegerField(default=0)#在线时间单位分钟,当该值超过240,强制下线

    state=models.IntegerField(default=0)#顾客状态0-offline normal,1-online normal 2 force off line 

    fee=models.IntegerField(default=0)#费用

 同步数据库,命令行中依次运行

python manage.py makemigrations
 python manage.py sqlmigrate netBarSys  0001
 python manage.py migrate

创建管理员账户

创建管理员账户,管理员是不能注册的。从命令行进入graduationDesignSys路径,依次执行以下命令

 python manage.py shell

>>> 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文件内容是另外的内容这里不详细赘述,只截取部分重要代码

登陆文件代码:

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>主页</title>

     <!-- 使用CSS样式来控制div布局 -->

     <style type="text/css">

        /*定义全局的div布局*/

        #content{

            width: 100%;

            height: 800px;

            margin:200px auto;

        }

        html,body{text-align:center}

        input,select{height:30px; width:200px; vertical-align:left;}

    </style>

</head>

<body>

    <div id=content>

        <h2>AA网吧管理系统</h2>

        <div>

            {% for message in messages %}

                <div class='alert alert-{{message.tags}}' style="color:coral">{{ message }}</div>

            {% endfor %}

        </div>

        <form action="{% url 'index' %}" method="post" name='login'>{% csrf_token %}

           <table align="center">

                <tr>

                    <td>账户:</td>

                    <td><input type="text" id="id_username" name="username" placeholder="用户名" autofocus required  /></td>

                </tr>

                <tr>

                    <td>密码:</td>

                    <td><input type="password" id="id_password" placeholder="密码" name="password" required  /></td>

                </tr>

                <tr>

                    <td></td>

                    <td>

                        <input type="submit" value="登录" >

                    </td>

                </tr>

           </table>     

    </form>

</div>

</body>

</html>

创建视图函数实现登陆功能

在netBarSys/views.py中

def index(request):

    if request.method == 'POST':

        name = request.POST['username']

        password =  request.POST['password']

        # 查询用户是否在数据库中

        print("%s,%s,%d"%(name,password))

        if Users.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)

            if user.password==password:

                request.session['is_login'] = 'true'

                request.session['username'] = 'username',

                if user.usertype==1:

                    response=render(request, 'homepage_a.html')#跳到管理员首页界面

                else:

                    response=render(request, 'homepage.html')#跳到顾客首页界面

                #set cookie

                response.set_cookie('username', user.name)

                return response

            else:

                messages.add_message(request,messages.ERROR,'用户密码或身份类型错误')

                return render(request, 'index.html')

        else:

            messages.add_message(request,messages.ERROR,'用户不存在')

            return render(request, 'index.html')

    return render(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博客

https://www.jb51.net/article/165607.htm

  • 9
    点赞
  • 114
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值