返回顶部
首页 > 资讯 > 数据库 >python+django+mysql开发实例分析
  • 679
分享到

python+django+mysql开发实例分析

2023-06-26 04:06:03 679人浏览 独家记忆
摘要

本篇内容主要讲解“python+Django+mysql开发实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python+djanGo+Mysql开发实例分析”吧!开发工具:PyCharm

本篇内容主要讲解“python+Django+mysql开发实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习Python+djanGo+Mysql开发实例分析”吧!

开发工具PyCharm

环境:python3.7.4(例子中用的3.6)
下载安装pycharm
分为社区版和专业版,一个免费一个收费
Pycharm2021破解版下载
下载安装python
安装好开发工具和python环境后,打开pycharm,配置python环境以及升级pip,由于低版本pip影响新版本组件的安装因此建议升级到最新版本的pip。

一、安装配置环境

python+django+mysql开发实例分析

python+django+mysql开发实例分析

配置好python环境后

python+django+mysql开发实例分析

python+django+mysql开发实例分析

python+django+mysql开发实例分析

安装中的状态

python+django+mysql开发实例分析

安装成功提示如下

python+django+mysql开发实例分析

成功后等待一会工具处理插件,处理成功后就可以用新版本的pip了

python+django+mysql开发实例分析

同样的方法安装django,pymysql
需要注意的是,各个插件版本的依赖关系,安装你的python版本支持的django和pymysql

二、创建django项目

右键你的项目,打开终端

python+django+mysql开发实例分析

python+django+mysql开发实例分析

输入如下内容

#创建一个项目,名称为blogsdjango-admin.exe startproject blogs #进入项目目录cd blogs#创建一个应用,注应用名称不能与项目名称相同python manage.py startapp blog

Pycharm 设置路径

python+django+mysql开发实例分析

两个都勾选上,然后右键目录,加入目录的路径,引用模块的时候就不会报错

python+django+mysql开发实例分析

项目创建好后,目录结构如下

python+django+mysql开发实例分析

三、开发

添加url路由

python+django+mysql开发实例分析

在urls.py文件中,编写如下代码:

from django.contrib import adminfrom django.urls import pathfrom blog.views import *urlpatterns = [    path('admin/', admin.site.urls),    path('', indexes),    path('blog/', index),    path('start/', start_scrapy),]

Settings.py中添加应用配置

import pymysql  #引用mysql驱动pymysql.install_as_MySQLdb()ALLOWED_HOSTS = ["*"]#允许全部主机访问# Application definitionINSTALLED_APPS = [    'django.contrib.admin',    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    'django.contrib.messages',    'django.contrib.staticfiles',    'blog',#添加创建的应用模块    'bootstrap3',#如果需要使用bootstrap框架,需要安装django-bootstrap3插件]DATABASES = {#配置数据库链接属性    # 'default': {    #     'ENGINE': 'django.db.backends.sqlite3',    #     'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),    # }    'default': {        'ENGINE': 'django.db.backends.mysql',  # 或者使用 mysql.connector.django        'NAME': 'blog',        'USER': 'root',        'PASSWord': '@bjive321',        'HOST': '59.110.138.8',        'PORT': '3306',    }}

编写models

python+django+mysql开发实例分析

from django.db import models# Create your models here.class Blog(models.Model):    title = models.CharField(u'标题', max_length=64)    content = models.TextField(u'内容', default="")    update_time = models.DateTimeField(u'更新时间', auto_now=True)    pub_date = models.DateField(u'发布时间')    author = models.CharField(u'作者', max_length=64, default=None)    # update_time.editable = True    # 列表中显示的内容    def __str__(self):        return "标题:{},字数:{},概要:{}".fORMat(self.title, len(self.content), self.content[:18])class Spider(models.Model):    #自定义主键    # id = models.CharField(primary_key=True)    date = models.DateField(u'日期')    open = models.DecimalField(u'开盘价', max_digits=8, decimal_places=2)    close = models.DecimalField(u'收盘价', max_digits=8, decimal_places=2)    height = models.DecimalField(u'最高价', max_digits=8, decimal_places=2)    low = models.DecimalField(u'最低价', max_digits=8, decimal_places=2)    updownd = models.DecimalField(u'涨跌幅度', max_digits=8, decimal_places=2)    turnrate = models.DecimalField(u'换手率', max_digits=8, decimal_places=2)    count = models.DecimalField(u'总价', max_digits=8, decimal_places=2)

配置admin.py后台管理功能扩展,将开发的模块注册到admin后台管理中,可以自动赋予增删改查能力。

python+django+mysql开发实例分析

我增加了两个功能,一个博客管理,一个爬虫管理(对爬取的内容进行修改查看删除等操作)

from django.contrib import adminfrom blog.models import Blog, Spiderclass ContactAdmin(admin.ModelAdmin):    # 增加内容时,将登陆人的账号存入指定的字段中,models中要预留这个字段,这里是author    def save_model(self, request, obj, form, change):        if change:  # 更新操作返回true            obj.save()        else:  # 否则是新增            obj.author = request.user            obj.save()    # 设置作者字段只读    readonly_fields = ("author",)    # 过滤,只能查看操作登陆人自己创建的内容    def get_queryset(self, request):        qs = super(ContactAdmin, self).get_queryset(request)        if request.user.is_superuser:            return qs        return qs.filter(author=request.user)    # listdisplay设置要显示在列表中的字段(id字段是Django模型的默认主键)    list_display = ('title', 'update_time', 'pub_date', 'author')  # list    search_fields = ('title', 'content',)  # 如果只有一个值,结尾必须有一个逗号,证明是list或元组    # list_per_page设置每页显示多少条记录,默认是100条    list_per_page = 5    # ordering设置默认排序字段,负号表示降序排序    ordering = ('-update_time',)    # list_editable 设置默认可编辑字段,第一个字段不允许编辑    list_editable = ['pub_date', ]    # fk_fields 设置显示外键字段    # fk_fields = ('Machine_room_id',)    date_hierarchy = 'pub_date'class SpiderAdmin(admin.ModelAdmin):    list_display = ('date', 'open', 'close', 'height', 'low', 'updownd', 'turnrate', 'count')  # list    date_hierarchy = 'date'    # list_per_page设置每页显示多少条记录,默认是100条    list_per_page = 20# ReGISter your models here.admin.site.register(Blog, ContactAdmin)admin.site.register(Spider, SpiderAdmin)# 设置登陆窗口的标题admin.site.site_header = '屌炸天系统'# 设置页签标题admin.site.site_title = '牛逼轰轰'

初始化admin以及创建blog和spider表

$ python manage.py migrate   # 创建表结构,默认创建admin模块表$ python manage.py makemigrations blog  # 让 Django 知道我们在我们的模型有一些变更$ python manage.py migrate blog  # 创建自定义表结构$ python manage.py createsuperuser #创建后台管理员账号

编写views.py

import base64from io import BytesIOimport requestsfrom django.Http import JSONResponsefrom django.shortcuts import renderimport markdown# Create your views here.import blog.models as mimport pandas as pdimport matplotlibfrom matplotlib import pyplot as plt# 查询# models.UserInfo.objects.all()# models.UserInfo.objects.all().values('user')    #只取user列# models.UserInfo.objects.all().values_list('id','user')    #取出id和user列,并生成一个列表# models.UserInfo.objects.get(id=1)# models.UserInfo.objects.get(user='yangmv')# 增# models.UserInfo.objects.create(user='yangmv',pwd='123456')# 或者# obj = models.UserInfo(user='yangmv',pwd='123456')# obj.save()# 或者# dic = {'user':'yangmv','pwd':'123456'}# models.UserInfo.objects.create(**dic)# 删# models.UserInfo.objects.filter(id=1).delete()# 改# models.UserInfo.objects.filter(user='yangmv').update(pwd='520')# 或者# obj = models.UserInfo.objects.get(user='yangmv')# obj.pwd = '520'# obj.save()def index(request):    i = request.GET.get('id')    # postdata = request.POST['id']    blog = m.Blog.objects.get(id=i)    blog_content = markdown.markdown(blog.content)    spider = m.Spider.objects.all().values()    plot_data = showMatplot(pd.DataFrame(spider))    imb = base64.b64encode(plot_data)  # 对plot_data进行编码    ims = imb.decode()    imd = "data:image/png;base64," + ims    return render(request, "blog.html", {'blog': blog, 'blog_content': blog_content, 'img': imd})def indexes(request):    blogs = m.Blog.objects.all()    return render(request, "blogs.html", {'blogs': blogs})#图标嵌入django页面def showMatplot(df):    plt.figure(figsize=(12, 10))  # 设置图像大小    plt.subplot(212)  # 布局两行1列的第二个    col = ['date', 'open', 'close', 'height', 'low', 'updownd', 'count']    df = df.astype(        {'open': 'float', 'close': 'float', 'height': 'float', 'low': 'float', 'updownd': 'float', 'count': 'float'})    df = pd.DataFrame(df, columns=col)    # print(df)    # print("*" * 40)    # # corr只能对数值型数据进行相关度计算    # print(df.corr())    x = pd.to_datetime(df['date'])    y1 = df["open"]    y2 = df["close"]    y3 = df["height"]    y4 = df["low"]    plt.plot(x, y1, label='open', linestyle='-', c='black', linewidth=1)    plt.plot(x, y2, label='close', linestyle='--', c='r', linewidth=1)    plt.plot(x, y3, label='height', linestyle=':', c='g', linewidth=1)    plt.plot(x, y4, label='low', linestyle='-.', c='b', linewidth=1)    plt.legend()    plt.subplot(211)  # 布局两行一列第一个    df1 = df.sort_values(by='date', ascending=True)    # df1 = df1.iloc[30:]    col = ["date", "close"]    close = pd.DataFrame(df1, columns=col)    data = cal_macd_system(close, 12, 26, 9)    x = pd.to_datetime(data['date'])    # y = pd.to_numeric(data["close"])    y1 = data["macd"]    # plt.plot(x, y, label="k")    plt.plot(x, y1, label="macd")    plt.title("某公司股票", fontproperties=zhfont1, fontsize=15)    plt.legend()    buffer = BytesIO()    plt.savefig(buffer)    plot_data = buffer.getvalue()    return plot_data#下载字体放到项目目录中,解决图标中文显示zhfont1 = matplotlib.font_manager.FontProperties(fname="FZSTK.TTF")#macd指标算法def cal_macd_system(data, short_, long_, m):    '''    data是包含高开低收成交量的标准dataframe    short_,long_,m分别是macd的三个参数    返回值是包含原始数据和diff,dea,macd三个列的dataframe    '''    data['diff'] = data['close'].ewm(adjust=False, alpha=2 / (short_ + 1), ignore_na=True).mean() - \                   data['close'].ewm(adjust=False, alpha=2 / (long_ + 1), ignore_na=True).mean()    data['dea'] = data['diff'].ewm(adjust=False, alpha=2 / (m + 1), ignore_na=True).mean()    data['macd'] = 2 * (data['diff'] - data['dea'])    return data#绘制macd指标曲线def macdview(df):    df1 = df.sort_values(by='date', ascending=True)    # df1 = df1.iloc[30:]    col = ["date", "close"]    close = pd.DataFrame(df1, columns=col)    data = cal_macd_system(close, 12, 26, 9)    x = pd.to_datetime(data['date'])    # y = pd.to_numeric(data["close"])    y1 = data["macd"]    # plt.plot(x, y, label="k")    plt.plot(x, y1, label="macd")    plt.title("某公司股票", fontproperties=zhfont1, fontsize=15)    # plt.legend()    buffer = BytesIO()    buffer.flush()    plt.savefig(buffer)    plot_data = buffer.getvalue()    buffer.close()    return plot_data#在线启动爬虫def start_scrapy(request):    # 获取页面传参,要区分请求类型是POST还是GET,不同请求用不同的方法接收参数    year = request.POST.get('year')    jd = request.POST.get('jd')    url = 'http://127.0.0.1:6800/schedule.json'    # spider是执行scrapy list返回的名称,参数问题:除了内置key的参数外如project,spider等,其他参数均由爬虫初始化函数的kwargs接收    # 同时jobid也有kwargs接收,**kwargs是接收字典型的参数,带有key值的    data = {'project': 'pachong', 'spider': 'pachong_spider', 'year': year, 'jd': jd}    print(requests.post(url=url, data=data))    return JsonResponse({'result': 'ok'})

在创建的应用下,创建2个文件夹,分别为static和templates,名字必须为这个,static是放静态资源CSS,js,img等,templates存放模板页面文件html等
如果想自定义路径需要在settings.py配置你的路径到环境中(具体配置请百度)

python+django+mysql开发实例分析

python+django+mysql开发实例分析

在终端中运行服务:

$python manage.py runserver 8080(不指定端口号的话默认8000)

以上就是我第一个入门级django项目的开发过程,以此记录,激励后期学习!后面会整理爬虫学习的代码也一并记录下来。

项目源代码:pystudy_jb51.rar

到此这篇关于python+django+mysql开发实战(附demo)的文章就介绍到这了,更多相关python django mysql开发内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

到此,相信大家对“python+django+mysql开发实例分析”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

您可能感兴趣的文档:

--结束END--

本文标题: python+django+mysql开发实例分析

本文链接: https://lsjlt.com/news/306839.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python+django+mysql开发实例分析
    本篇内容主要讲解“python+django+mysql开发实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python+django+mysql开发实例分析”吧!开发工具:pycharm...
    99+
    2023-06-26
  • python+django+mysql开发实战(附demo)
    开发工具:pycharm 环境:python3.7.4(例子中用的3.6)下载安装pycharm:http://www.jetbrains.com/pycharm/download/...
    99+
    2024-04-02
  • Laravel开发实例分析
    本篇内容主要讲解“Laravel开发实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Laravel开发实例分析”吧!   准备开发环境   原教程使用...
    99+
    2024-04-02
  • Node.js开发实例分析
    这篇文章主要讲解了“Node.js开发实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Node.js开发实例分析”吧!1.分层组织代码例如Express.js这个应用广泛的Node.j...
    99+
    2023-06-29
  • Epicor开发实例分析
    Epicor开发实例分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。关于Epicor开发实例分析问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很...
    99+
    2023-06-05
  • python开发之str.format()用法实例分析
    本文实例分析了python开发之str.format()用法。分享给大家供大家参考,具体如下: 格式化一个字符串的输出结果,我们在很多地方都可以看到,如:c/c++中都有见过 下面看看python中的字符串...
    99+
    2022-06-04
    实例 python str
  • python开发之list操作实例分析
    本文实例分析了python开发之list操作。分享给大家供大家参考,具体如下: 对python中list的操作,大家可以参考《Python list操作用法总结》 以下是我个人的笔记: #python ...
    99+
    2022-06-04
    实例 操作 python
  • python开发之函数定义实例分析
    本文实例讲述了python开发之函数定义方法。分享给大家供大家参考,具体如下: 下面是我做的几个用列: #python中的函数定义,使用和传参 def_str = ''' python中的函数以如下...
    99+
    2022-06-04
    函数 实例 定义
  • python开发中module模块用法实例分析
    本文实例讲述了python开发中module模块用法。分享给大家供大家参考,具体如下: 在python中,我们可以把一些功能模块化,就有一点类似于java中,把一些功能相关或者相同的代码放到一起,这样我们需...
    99+
    2022-06-04
    实例 模块 python
  • python开发中range()函数用法实例分析
    本文实例讲述了python开发中range()函数用法。分享给大家供大家参考,具体如下: python中的range()函数的功能很强大,所以我觉得很有必要和大家分享一下 就好像其API中所描述的: If ...
    99+
    2022-06-04
    函数 实例 python
  • Vue3开发实例代码分析
    获取 thisVue2 中每个组件里使用 this 都指向当前组件实例,this 上还包含了全局挂载的东西,都知道 this.xxx 啥都有而 Vue3 中没有 this,如果想要类似的用法有两种,一是获取当前组件实例,二是获取全局实例,如...
    99+
    2023-05-17
    Vue3
  • Django模型层实例分析
    这篇文章主要讲解了“Django模型层实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Django模型层实例分析”吧!   一、F查询   在上面...
    99+
    2024-04-02
  • python编程开发之日期操作实例分析
    本文实例讲述了python编程开发之日期操作。分享给大家供大家参考,具体如下: 在python中对日期进行操作的库有: import datetime import time 对日期格式化信息,可以参考官方...
    99+
    2022-06-04
    编程开发 实例 日期
  • C#MSN插件开发实例分析
    这篇文章主要介绍“C#MSN插件开发实例分析”,在日常操作中,相信很多人在C#MSN插件开发实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#MSN插件开发实例分析”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-17
  • Python程序开发问题举例分析
    这篇文章主要介绍“Python程序开发问题举例分析”,在日常操作中,相信很多人在Python程序开发问题举例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python程序开发问题举例分析”的疑惑有所帮助!...
    99+
    2023-06-17
  • Dropbox正开发的开源Python 解释器Pyston的实例分析
    这期内容当中小编将会给大家带来有关Dropbox正开发的开源Python 解释器Pyston的实例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。大家好,我非常激动宣布 Pyston,这是一个正在由 D...
    99+
    2023-06-17
  • python编程开发之类型转换convert实例分析
    本文实例讲述了python编程开发之类型转换convert。分享给大家供大家参考,具体如下: 在python的开发过程中,难免会遇到类型转换,这里给出常见的类型转换demo: int(x [,base...
    99+
    2022-06-04
    编程开发 实例 类型
  • Android开发之Location用法实例分析
    本文实例讲述了Android开发中Location用法。分享给大家供大家参考,具体如下: Location 在Android 开发中还是经常用到的,如通过经纬度获取天气,根据L...
    99+
    2022-06-06
    android开发 location Android
  • Android开发之Parcel机制实例分析
    本文实例讲述了Android开发之Parcel机制。分享给大家供大家参考。具体分析如下: 在java中,有序列化机制。但是在安卓设备上,由于内存有限,所以设计了新的序列化机制。...
    99+
    2022-06-06
    android开发 Android
  • Android开发之Sqliteopenhelper用法实例分析
    本文实例讲述了Android开发之Sqliteopenhelper用法。分享给大家供大家参考。具体分析如下: 如果在安卓开发中,直接使用Activity中的openOrCrea...
    99+
    2022-06-06
    android开发 Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作