Django实现计算器小练习

前言

今天写一篇关于Django 简单计算器的练习,对应我前两篇Django的博文里的那个练习,废话不多说,直接开搞

题目描述

写一个简单的计算器页面,能够在服务端进行简单加减乘除计算

  • 分析
    • 首先是前端页面的书写 — 模板
    • 然后是后端代码的逻辑 — 视图函数
    • 地址访问 — urls.py

实际操作

  • 创建项目
      django-admin startproject 项目名
    
      结构:
          如[mysite为项目名] mysite1/mysite1/。。。。
    

配置

  • 建立配置

    • 在内层mysite1里面创建 views.py 视图函数
    • 在外层mysite1下创建templates 模板文件夹
  • 路径配置

    • 在settings.py文件夹里面,找到 templates[大写的],里面有个‘DIRS’,它实际上就和路径有关,在linux中就包含一个dir这样的命令
    • DIRS后面配置模板文件夹的路径,BASE_DIR当前项目的路径所在
    • 'DIRS': [os.path.join(BASE_DIR, 'templates')],
    • os.path.join可以拼接路径,防止平台的差异性 [如linux和windows]
    • os这个模块需要导入,在上面写 import os即可
  • 关闭csrf

    • 在进行post需求访问的时候,默认情况下会禁止,所以需要修改设置
    • 在settings中 MIDDLEWARE这里,注释掉'django.middleware.csrf.CsrfViewMiddleware',

前端页面的书写

  • 模板书写,在模板文件夹中创建一个html文件
  • 代码示例
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>计算器</title>
</head>
<body>
    <form action="/mycal/" method="post">
        <input type="text" name="x" value={{count1}}>
        <select name="op">
            <!-- selected 是默认选项值 -->
            <option value="add" {% if op == "add" %} selected {% endif %}>+加</option>
            <option value="sub" {% if op == "sub" %} selected {% endif %}>-减</option>
            <option value="mul" {% if op == "mul" %} selected {% endif %}>*乘</option>
            <option value="div" {% if op == "div" %} selected {% endif %}>/除</option>
        </select>
        <input type="text" name="y" value={{count2}}>
        <span>={{ result }}</span> 
        <div>
            <input type="submit" value="开始计算">
        </div>
    </form>
</body>
</html>
  • 代码解析:
    • 首先这个与后端进行交互,选用form表单,action是访问地址,method是传参方式
    • 两个数值输入框,name :value,这是与后端进行数据交互的重要根据
    • 一个选项下拉框,当我们选择后修改默认值[防止计算完成后它变成默认加号]
    • result就是结果,需要通过后端逻辑计算获得
    • 提交按钮–开始计算,记住要放在form表单里面,在写之前我操作了一遍,写完后一直得不到结果,甚至AI都没检查出来,结果发现这里没写在form表单里面,差点吐血。

视图函数的书写

  • 这个视图函数实际上就是上面说的后端 views.py
  • 代码示例
from django.shortcuts import render
from django.http import HttpResponse

def mycal(request):
    if request.method == "GET":
        return render(request,"mycal.html")

    elif request.method == "POST":
        # 1. 获取用户输入的值 与 选项
        count1 = int(request.POST.get("x")) # 字符串
        count2 = int(request.POST.get("y"))
        op = request.POST.get("op")

        # 2. 判断选项,计算结果
        if op == "add":
            result = count1 + count2
        elif op == "sub":
            result = count1 - count2
        elif op == "mul":
            result = count1 * count2
        elif op == "div":
            try:
                result = count1 / count2
            except Exception as e:
                result = e
        return render(request,"mycal.html",locals())

    else:
        print("我也不知道")
  • 逻辑分析
    • 浏览器通过地址访问[GET]后端
    • 视图函数接收判断[GET]
    • 返回前端页面给浏览器,mycal.html就是刚才模板文件夹里面写得那个
    • 此时在浏览器中展现出页面,输入两个数值,包括选择加减乘除的选项,点击开始计算
    • 浏览器再次访问后端,在视图函数中先判读传参方式[POST],在进行计算
    • 后端再返回数据等,注意除法的分母不能为0

确定url地址

  • 位置:urls.py
  • 导包:from . import views
  • 路径书写:path('mycal/', views.mycal),,前面那个就是浏览器访问地址

运行代码

  • 打开终端,找到该项目下manage.py的位置
  • 测试:ls 命令下出现manage.py
  • 运行:python3 manage.py runserver,注意我这是Linux系统
  • 浏览器访问:运行后下面出现http://127.0.0.1:8000/,把这个复制到浏览器中,再输入mycal/,就是上面那个地址,再按回车键,进行操作。

结语

这个练习实际上比较简单,但对于刚学Django的人来说,多少有些难度。写代码千万要注意细节。先写不变的,再写变化的,从简单的再到困难的进行书写代码
  • 15
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值