当前位置: 首页 > news >正文

从零开始:Django初学者的实战之旅

 一、概念引入

要基于编程开发一个完整的企业项目不管什么样的项目,基本都有3种不同的开发模式,这几种开发模式,如果把项目类比成建造房子则有如下:
1.原生开发:类似从0开始造房子,从0开始构建项目,什么东西都是自己实现的
2.敏捷开发:基于框架,开发工具]从一个半成品开发到成品,类似毛坯房构建成成品房
3.二次开发:从公司原有的项目,或者从开源项目中,进行二次改造,不需要的功能隐藏或者删除,没有的功能进行开发集成类似二手房改造。

重量级框架:Django

二、问题探索

问题一:Django框架概述
问题二:Django框架的特点
问题三:Django框架的设计模式
问题四:Django框架的交互流程(生命周期/访问流程)
问题五:Diango框架的基本使用
问题六:Diango框架的两大对象
问题七:保持登录状态Cookie-Session

三、认识Django

Python下有许多款不同的Web框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Diango。
Django是一个开放源代码的Web应用框架,由Python写成。
Diango遵守BSD版权,初次发布于2005年7月,并于2008年9月发布了第一个正式版本1.0.
Django采用了MVT的软件设计模式,即模型(Model),视图(View)和模板(Template).
django的发布路线:Download Django | Django
官网:The web framework for perfectionists with deadlines | Django

四、项目初始化

1.指定位置创建Django项目

创建完成后就会自动初始化完成,初始启动查看

浏览器进入指定网页:http://localhost:8000/

需要注意的是下面这两个文件:

settings.py 基础设置文件夹

urls.py 路由配置文件夹:配置后端接口、渲染数据以及网页

settings.py可以修改一些配置:

语言改成中文:

LANGUAGE_CODE = 'en-us' 改为 LANGUAGE_CODE = 'zh-hans'

时区时间改一下:

TIME_ZONE = 'UTC' 改成 TIME_ZONE = 'Asia/Shanghai'

项目刷新一下,改好咯

settings.py 文件中ctrl+F搜索找到DATABASES

打开Navicat软件,右键新建数据库lagou

由于数据保存在本地mysql中,所以修改为

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'lagou',
        'USER': 'root',
        'PASSWORD': '158158',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

user和password根据自己设置的来哦

五、爬虫【单独写一篇文章】
链接跳转

六、数据存储【集群启动】

前提说明:提前下载配置好hadoop,hive【不会->跟着做】,spark【spark配置教程】,本人三个集群节点分别为192.168.222.101 192.168.222.102 192.168.222.103

root目录中可能出现一些权限的问题,这里我将使用用户hadoop

七、创建APP

作用:把项目对应的功能划分成不同的模块

终端:python manage.py startapp myApp 

settings.py的INSTALLED_APPS的内容添加:

python manage.py makemigrations

应用到数据库中:

python manage.py migrate

前端框架下载:链接

把moban6048和template-007文件放在项目下即可

settings.py文件中添加:

import os

#静态资源文件
STATICFILES_DIRS = (
    os.path.join(BASE_DIR,'static'),
)

views.py文件

from platform import uname
from django.shortcuts import render
from django.http import HttpResponseRedirect
from django.contrib import messages
from statsmodels.sandbox.distributions.sppatch import expect
from utils.querydb import *
from utils.getChartData import *
from utils.getPublicData import *
from myApp.models import *
# Create your views here.
def home(request):
    if request.method == 'GET':
        averageCityX,averageCityY,salarycategoryData,expSalaryX,expSalaryY1,expSalaryY2,peoplecategoryData,addresssumData=getIndexData()
        sorted_arr = list(getsalaryTop())
        return render(request, 'home.html',{
            'averageCityX':averageCityX,
            'averageCityY':averageCityY,
            'salarycategoryData':salarycategoryData,
            'expSalaryX':expSalaryX,
            'expSalaryY1':expSalaryY1,
            'expSalaryY2':expSalaryY2,
            'peoplecategoryData':peoplecategoryData,
            'addresssumData':addresssumData,
            'sorted_arr':sorted_arr
        })#渲染页面

def login(request):
    if request.method == 'GET':

        return render(request, 'login.html',{

        })#渲染页面

def registry(request):
    if request.method == 'GET':
        return render(request, 'registry.html',{

        })#
    else:
        uname = request.POST.get('username')
        password = request.POST.get('password')
        ckPassword = request.POST.get('ckPassword')
        print(uname,password,ckPassword)
        try:
            User.objects.get(username=uname)
            message='用户名已注册'
        except:
            if not uname or not password or not ckPassword:
                message='请输入完整信息'
                messages.error(request, message)
                return HttpResponseRedirect('/myApp/registry/')
            elif password != ckPassword:
                message='两次密码不一致,请重新输入'
                messages.error(request, message)
                return HttpResponseRedirect('/myApp/registry/')
            else:
                User.objects.create(username=uname,password=password)
                messages.success(request, '注册成功')
                return HttpResponseRedirect('/myApp/login/')
        return render(request, 'registry.html',{

        })
def salaryChar(request):
    if request.method == 'GET':
        return render(request, 'index.html',{})

整个项目在pycharm专业版中运行,未完待续....


文章转载自:

http://JOHlw8de.bcngs.cn
http://WP7hoedF.bcngs.cn
http://fdZjLhc0.bcngs.cn
http://1rbKY8mp.bcngs.cn
http://eCgnzE5y.bcngs.cn
http://N8eQ4iEg.bcngs.cn
http://dogYGpkx.bcngs.cn
http://XFDmnQ86.bcngs.cn
http://zULS5PUh.bcngs.cn
http://Afv5Io4M.bcngs.cn
http://zwcwwaXH.bcngs.cn
http://j4FuA2cL.bcngs.cn
http://JebZUnFk.bcngs.cn
http://zQg8ZwA6.bcngs.cn
http://0VxRPV06.bcngs.cn
http://iofiqreW.bcngs.cn
http://UmxEKJtd.bcngs.cn
http://f5PIgu1J.bcngs.cn
http://qiBFBqQY.bcngs.cn
http://QkiTBoik.bcngs.cn
http://3lNlmIcz.bcngs.cn
http://O6dpOXfC.bcngs.cn
http://zeN6VlOI.bcngs.cn
http://D6faghZg.bcngs.cn
http://zTpHho6m.bcngs.cn
http://cUUfBlYR.bcngs.cn
http://VgUHX0cZ.bcngs.cn
http://jotdu1GO.bcngs.cn
http://AfKLAejl.bcngs.cn
http://2GjWS0Se.bcngs.cn
http://www.dtcms.com/a/14963.html

相关文章:

  • CEF132 编译指南 MacOS 篇 - depot_tools 安装与配置 (四)
  • Java网络编程学习(二)
  • 【AQS为什么采用双向链表?】
  • Deepseek 接入Word处理对话框(隐藏密钥)
  • RAG 面试专题笔记
  • Hono.js入门指南_从零开始构建Web应用
  • ubuntu安装VMware报错/dev/vmmon加载失败
  • 使用MaxKB及deepseek搭建本地AI知识库
  • Mac 10.15.3: /var/lib/docker no such file or directory
  • 基于 FFmpeg 和 OpenGLES 的 iOS 视频预览和录制技术方案设计
  • python自动化测试之Pytest框架之YAML详解以及Parametrize数据驱动!
  • tkinter-TinUI-xml实战(12)应用组启动器
  • 团结引擎 Shader Graph:解锁图形创作新高度
  • 无法连接虚拟设备 sata0:1,0因为主机上没有相对应的设备
  • HCIA项目实践---OSPF的知识和原理总结
  • 【STM32】通过HAL库Flash建立FatFS文件系统并配置为USB虚拟U盘MSC
  • MongoDB 基本操作
  • Docker 常用命令基础详解(一)
  • 【16届蓝桥杯寒假刷题营】第1期DAY4
  • CEF132编译指南 MacOS 篇 - 构建 CEF (六)
  • sqli_labs_master Less-8 时间盲注,boolen盲注 获取数据库中的表、列
  • 轻量级TinyXml2的应用
  • 【Pandas】pandas Series drop
  • FFmpeg Video options
  • qt中实现QListWidget列表
  • Django开发入门 – 4.创建Django app
  • window 11 鼠标右键切换回经典模式
  • 稀土抑烟剂——为汽车火灾安全增添防线
  • 教程 | Proxmox VE(PVE)安装全流程指南(末尾附镜像及快速配置脚本)
  • vue2打包带路径的项目,刷新404问题解决