基于django的网站建设(选择windows服务器版本)

一、利用pycharm创建django项目

利用专业版pycharm创建django项目,修改项目位置,配置解释器(一般默认即可),点击创建即可,如下图

其中模板文件夹(templates),配置文件(settings.py),路径文件(urls.py),组织管理文件(manage.py)将会是我们常用的初始文件。

(一)、配置文件(settings.py)的介绍与修改

如下图,有了该配置,整个django项目才知道在哪里检索模板文件夹,有多个同名模板文件夹存在于不同文件夹,则django会按照其所处层级依次遍历查找,或则也可以在配置文件中直接配置所需要的模板文件夹所在路径,在setting中templates上级路径应与templates文件对应。

(二)、创建注册app(一个应用)

1.创建app 

在终端执行一下命令 python manage.py startapp learning01(app名称) 创建app 其中,初学者不要改动migrations文件、apps.py、test.py、admin.py

migrations文件: 数据库变更记录

admin.py:Django默认提供admin后台管理

test.py:单元测试

apps.py:app启动类

views.py: url中的函数一般定义在这里面

models.py: 对数据库进行操作

 2.注册app

在setting中设置如下 

只有设置注册好后才能启动

(三)、快速创建网页并启动

 在urls.py中设置好访问路径和对应的函数,并在views.py中创建好对应的函数,再点击运行或在命令行执行python manage.py runserver

点击地址访问即可 

若路径不为空,则还需要在初始地址后面拼接路径,跳转到指定路径访问

 

但是!一个合格的网页是集前端,后端,数据库与一体的,上面只是实现了第一个简单网页的启动,接下来讲正式进入django项目的制作

二、开始创建拥有数据库与前端的django项目

(一)、静态文件

图片、css、js、插件(bootstrap等第三方web框架之类的)、其他部分文件资源(如Excel、Word、TXT之类的)我们将其归纳于静态文件资源,统一放到static文件夹下面

此处,作者将jquery (jQuery)和bootstrapV5(Bootstrap v5 中文文档 · Bootstrap 是全球最受欢迎的 HTML、CSS 和 JS 前端工具库。 | Bootstrap 中文网 (bootcss.com))放到对应的文件夹下,下载链接在下方

 bootstrapV5:Bootstrap v5 中文文档 · Bootstrap 是全球最受欢迎的 HTML、CSS 和 JS 前端工具库。 | Bootstrap 中文网 (bootcss.com)icon-default.png?t=N7T8https://v5.bootcss.com/  jquery : jQueryicon-default.png?t=N7T8https://jquery.com/

 简单的静态资源引用示例:

#views.py
from django.shortcuts import render, HttpResponse


def download(request):
    return render(request, 'login_interface.html')

#urls.py
from django.urls import path
from learning01 import views

urlpatterns = [
    path('', views.download),
]
{% load static %}
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>登录界面</title>
    <script src="{% static 'js/jquery-3.6.4.min.js' %}"></script>
    <script src="{% static 'js/popper.min.js' %}"></script>
    <script src="{% static 'pulgins/bootstrap-5.3.0-alpha1-dist/js/bootstrap.min.js' %}"></script>
    <link rel="stylesheet" type="text/css" href="{% static 'css/html_ini.css' %}">
    <link rel="stylesheet" type="text/css" href="{% static 'pulgins/bootstrap-5.3.0-alpha1-dist/css/bootstrap.min.css' %}">
</head>
<body class="m-0 p-0">
    <div class="row m-0 p-0 h-100">
        <div class="col-8 p-0 m-0">
            <img class="h-100 w-100 p-0 m-0" src="{% static 'image/1.jpg' %}" alt="无法载入图片资源">
        </div>
        <div class="col p-0 m-0">
            <div class="card text-center w-100 h-100">
                <div class="card-header">
                Featured
                </div>
                <div class="card-body position-relative">
                    <div class="position-absolute top-50 start-50 translate-middle w-100">
                        <div class="input-group mb-5">
                            <label class="input-group-text" for="username_input">用户名</label>
                            <input type="text" class="form-control" placeholder="请输入用户名" id="username_input">
                        </div>
                        <div class="input-group mb-5">
                            <label class="input-group-text" for="password_input">密码</label>
                            <input type="text" class="form-control" placeholder="请输入用户密码" id="password_input">
                        </div>
                    </div>
                </div>
                <div class="card-footer text-muted btn-group" role="group">
                    <button type="button" class="btn btn-primary">登录</button>
                    <button type="button" class="btn btn-success">注册</button>
                </div>
            </div>
        </div>
    </div>
</body>
</html>
/*html_ini.css*/
*{
    padding: 0;
    margin: 0;
}
html,body{
    height: 100%;
    width: 100%;
}

运行结果:

(二)、配置数据库

 (一)、创建数据库

创建一个该项目的数据库,本文使用的是mysql,首先要安装包mysqlclient

1. 进入Mysql
mysql -u root -p

2.查看已有数据库
show databases;

3. 创建新的数据库 
create database learning01;

 4. 删除数据库
drop database (数据库名);
5. 进入数据库
use (数据库名);
6. 查看某数据库的数据表 
show tabels;

(二)、连接数据库

在setting中配置数据库

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '数据库名',
        'USER': '用户名',
        'PASSWORD': '数据库密码',
        'HOST': '127.0.0.1(数据库地址,本地为该地址)',
        'POST': 3306(窗口),
    }
}

(三)、创建数据表

Django中不需要直接操作数据库,而是通过models.py来增加或者修改数据库,上文已经做好了登录界面,接下来创建一个用户表,用以存储用户信息,首先在models.py中输入如下代码:

from django.db import models


# Create your models here.
class UserInfo(models.Model):
    Id = models.AutoField(verbose_name="用户id", primary_key=True)    # 主键设置为自动增长
    Username = models.CharField(verbose_name="用户名", blank=False, max_length=32, unique=True)
    Password = models.CharField(verbose_name="用户密码", blank=False, max_length=32, unique=True)
    user_choice = (
        (0, '管理员'),
        (1, '用户'),
    )
    userType = models.SmallIntegerField(verbose_name='权限级别', default=1, choices=user_choice)

    def __str__(self):
        return '%d%s%s%d' % (self.Id, self.Username, self.Password, self.userType)

    class Meta:
        db_table = 'UserInfo'
        verbose_name = '用户信息'

再在终端执行以下下命令:

//先执行该命令
python manage.py makemigrations
//再执行以下命令
python manage.py migrate

执行成功后如图

接下来我们可以在views.py中编写注册函数,登录函数,创建管理员账户,在前端中编写登录或者点击注册后跳转的页面,发送登录或者注册请求的函数,以实现登录或者注册功能

(四)编写登录和注册相关功能

思路分析:我们已经有了输入账户密码,跳转登录/注册界面的按钮,以及对应的用户数据库,只要我们实现从前端获取对应的用户信息,验证成功后跳转到对应的用户界面即可。即,接下来需要完成如下几步(这里为了方便展示,跳过注册部分,内部设置好登录账号,完成登录部分的展示):

1.实现点击登录后验证用户信息并跳转到对应的用户页面的功能

2.编写用户界面

1.实现点击登录后验证用户信息并跳转到对应的用户页面的功能

1). 点击登录按钮后将用户信息传入后端

首先创建该项目的综合JavaScript文件,将其放在static/js下,我这里命名为learning01.js;

再在login_interface.html的head部分新增脚本代码如下,导入js文件,然后就可以在该js文件中编写咱们的登录校验函数或者其他函数;

<script src="{% static 'js/learning01.js' %}"></script>

接下来在登录按钮上新增点击触发函数,并通过模板语法设置好登录失败的信息提示:

{# 在login_interface.html中对应的板块做如下修改,这里我就不展示完整的html代码了,
修改部分自己对应的去修改 #}

<div class="card-header">
    {{ error_msg }}
</div>

<button type="button" class="btn btn-primary" onclick="loging_valid()">登录</button>

 在learning01.js中编写函数loging_valid()

// input控件生成器
function input_create(i_name,i_value) {
    const input = document.createElement('input');
    input.type = 'hidden';
    input.name = i_name;
    input.value = i_value;
    return input;
}
//登录校验函数
function loging_valid(){
    let username,password;
    username=document.getElementById("username_input").value;
    password=document.getElementById("password_input").value;
    //上面是通过元素id来获取页面信息,这里我们获取了页面中用户名输入框和密码框所含的信息
    //console.info(username, password); // 该函数可以在控制台打印对应的变量信息
    //接下来通过form表单的形式将获取到的信息以字典形式传入到后端,这里我将该操作标记为操作1,若校验成功,则返回校验成功的信息
    //其实可以直接在前端使用form表单,但是这里还可以演示在js中创建form,就不去前端修改了
    const form1 = document.createElement('form');
    form1.method = 'post';
    form1.action = '/user/';
    form1.appendChild(input_create("username", username));  //这里input框的name不要与本来就有的页面元素重合
    form1.appendChild(input_create("password", password));
    document.body.appendChild(form1);
    form1.submit();//提交POST请求
    document.body.removeChild(form1);//删除整个form标签
}

这里是只启用console.info函数同时为修改card_header部分的div时,点击登录后的控制台的输出,证明我们已经成功用js获取到了页面信息

2).在后端接收数据并校验,成功后跳转到用户界面 

首先,在urls.py中设置好/user/路径下对应的函数

urlpatterns = [
    # path('admin/', admin.site.urls),

    path('', views.download),

    path('user/', views.loging_valid),  # 新增语句
]

我们在views.py中编写好接收请求的函数,这里注意,通过form表单发过来的请求需要在接收函数的上面加上@csrf_exempt,加这个装饰器的原因如下:

Django Django中的@csrf_exempt是什么|极客教程 (geek-docs.com)icon-default.png?t=N7T8https://geek-docs.com/django/django-questions/129_django_what_is_csrf_exempt_in_django.html在views.py中加上如下函数查看后端接收到的前端函数:

from django.shortcuts import render, HttpResponse
from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def loging_valid(request):
    if request.method == 'POST':
        print(request.POST)
    return render(request, 'login_interface.html')

 输入信息并点击登录后运行结果如下:

<QueryDict: {'username': ['123456'], 'password': ['learning123'], 'op_num': ['1']}>

 接下来我们在后端编写一个创建用户的函数并完善用户验证函数:

from learning01.models import UserInfo


def creat_test_user():
    """
    用于创建测试用户
    因为主键设置为了自动增长字段,所以在我们创建用户时不需要管主键
    """
    if not UserInfo.objects.filter(Username='developer', Password='developer01', userType=0).exists():
        UserInfo.objects.create(Username='developer', Password='developer01', userType=0)
        print('添加成功')

验证函数完善如下:

@csrf_exempt
def loging_valid(request):
    creat_test_user()   # 此处是为了创建一个测试用户,故此调用一次,调用完后可以注释掉
    if request.method == 'POST':
        req_data_dict = {'username': request.POST['username'],
                         'password': request.POST['password'],
                         'op_num': int(request.POST['op_num'])}
        if UserInfo.objects.filter(Username=req_data_dict['username'], Password=req_data_dict['password']).exists():
            return HttpResponse('登录成功')
    return render(request, 'login_interface.html')

 执行结果如下:

 这里我没有打印用户添加成功的信息,是因为之前我已经添加好了。

2.编写用户界面

至此我们可以开始编写登录后的用户界面,这里常规的html页面编写这里就不介绍了,这里通过用户界面的编写介绍Django模板语法和表单的生成。

...

待更新

三、Windows部署Django项目

本文以部署在本地服务器为例,部署好后服务器所在的局域网可访问网站

(一)、收集项目所依赖的库

将当前环境中的所有依赖的库名及其对应的版本号生成到一个名为 requirements.txt 的文件中,在终端使用命令pip freeze > requirements.txt

 这样要在部署的服务器上安装所需要的库只需要执行命令pip install -r requirements.txt即可快速安装项目相关的依赖包

(二)、安装和配置IIS

简单阐述如何安装和配置IIS。在Windows 系统中依次选择“控制面板”—“程序和功能”—-“打开或关闭 Windows 功能”选项,找到Internet Information Services(Internet信息服务),全部勾选即可。

(三)、开放端口

只有开放了访问端口,其他计算机才可通过网络访问你部署的网站,此处仅局域网可访问。

首先打开 Windows 操作系统的“控制面板”,找到“Windows Defender 防火墙”单击进人防火墙配置界面,如下图所示。

单击左侧菜单栏中的“高级设置”按钮进入高级设置界面,在左侧“入站规则”面板中单击“新建规则”按钮,进入入站规则向导界面,如下图所示。 

选中“端口”单选按钮,然后单击“下一页”按钮,进入端口设置界面,我这里选择5001端口开放,如下图所示。 设置好后依次点击下一页即可。

(四) 、部署项目

1、安装并启动wfastcgi

为了Djingo项目能够部署到 IIS 服务器上,需要安装 Python 包 wfastcgi,以管理员身份打开命今行进行安装(注意此处必须要以管理员身份,否则会安装失败),输人命令

pip install wfastcgi

安装完成后需要启动 wfastcgi,继续在终端中输人命令:

wfastcgi-enable

在控制台会输出下面的结果

到这一步说明wfastcgi安装成功并且已经成功启动。输出结果最后冒号中的内容即为Python和wfastcgi解释器核心脚本的具体路径,用符号“|”隔开该路径在后面的web配置文件中会使用到。

2、配置web.config文件

为了能够让IIS服务器准确地运行项目,需要配置和设定一些参数,包括项目路径项配置文件路径、解析器等。一种简单办法就是通过添加服务器配置文件实现。具体的,在项目根路径下创建一个web.config 文件,添加内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<configuration>

  <system.webServer>

    <handlers>

      <add name="Python FastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="python安装路径|wfastcgi文件所在路径" resourceType="Unspecified" requireAccess="Script" />

    </handlers>

    <httpErrors errorMode="Detailed" />

  </system.webServer>

  <appSettings>

    <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()" />

    <add key="PYTHONPATH" value="项目路径" />

    <add key="DJANGO_SETTINGS_MODULE" value="hengDaProject.settings" />

  </appSettings>

</configuration>

这里对照着自己的网站,修改三处地方替换即可。

(1)、scriptProcessor 中冒号部分分别填人前面对应的 Python和 wfastcgi解释器核心脚本文件所在路径。

(2)、这里的 value要替换成当前的项目根目录(跟manage.py同目录)。

(3)、< add key=“DJANGO_SETTINGS_MODULEvalue=”exam.settings”/>这里value处需要写人项目配置模块名称。

3、静态文件迁移

在项目根目录下的 static文件夹中同样创建一个 web.config 文件,文件内容如下

<?xml version="1.0" encoding="UTF-8"?>

<configuration>

  <system.webServer>

    <handlers>

      <remove name="Python FastCGI" />

    </handlers>

  </system.webServer>

</configuration>

该文件用于为IIS指明静态资源文件的渲染方式。接下来需要将项目所有的静态资源文件css、js、img等全部导人到static 文件夹中。

4、IIS创建网站

在控制面板的windows工具中打开“Internet Information Services(IIS)管理器”。在IIS管理器左侧导航面板中右击“网站”,在弹出的快捷菜单中选择“添加网站”选项,进入网站添加界面。然后按照下图进行网站创建,其中,物理路径为项目根目录,IP 地址和主机名可以不用填写,端口号采用之前开放的端口,端口号的设置不能与本机当前其他网站或程序冲突,最后单击“确定”按钮完成项目部署。

 

 

 至此,网站部署成功,可以让局域网的朋友们都访问你的网站,想要互联网可用还需要网络备案和购买ip,在此就不多做介绍了。

  • 25
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
基于Django的音乐网站是一种使用Django框架来构建的在线音乐平台。Django是一个强大的Python Web框架,它提供了许多功能和工具,使得开发一个功能完善的音乐网站变得更加简单和高效。 在基于Django的音乐网站中,你可以实现以下功能: 1. 用户注册和登录:用户可以创建自己的账号,并通过登录来访问个人信息和喜欢的音乐。 2. 音乐上传和管理:用户可以上传自己的音乐作品,并对其进行管理,包括添加标签、编辑信息等。 3. 音乐播放和分享:用户可以在网站上播放音乐,并将自己喜欢的音乐分享给其他用户。 4. 音乐推荐:根据用户的喜好和行为,系统可以推荐相关的音乐给用户,提供更好的用户体验。 5. 歌曲搜索和分类:用户可以通过关键词搜索歌曲,并按照不同的分类方式(如歌手、专辑、风格等)浏览音乐库。 为了实现这些功能,你可以使用Django提供的模型(Model)来定义数据库结构,使用视图(View)来处理用户请求和生成响应,使用模板(Template)来渲染页面。同时,你还可以使用Django的认证系统来管理用户的注册和登录,使用第三方库来处理音乐文件的上传和处理,以及使用Django的ORM(对象关系映射)来进行数据库操作。 总结一下,基于Django的音乐网站可以提供用户注册和登录、音乐上传和管理、音乐播放和分享、音乐推荐以及歌曲搜索和分类等功能。通过合理利用Django框架提供的功能和工具,你可以快速构建一个功能完善的音乐网站。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值