python+django+mysql开发实战(附demo)

开发工具:pycharm

环境:python3.7.4(例子中用的3.6)
下载安装pycharm:http://www.jetbrains.com/pycharm/download/#section=windows
分为社区版和专业版,一个免费一个收费
Pycharm2021破解版下载: https://www.jb51.net/softs/598504.html
下载安装python:https://www.python.org/downloads/windows/
安装好开发工具和python环境后,打开pycharm,配置python环境以及升级pip,由于低版本pip影响新版本组件的安装因此建议升级到最新版本的pip。

一、安装配置环境

配置好python环境后

安装中的状态

安装成功提示如下

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

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

二、创建django项目

右键你的项目,打开终端

输入如下内容

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

Pycharm 设置路径

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

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

三、开发

1.添加url路由

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

from django.contrib import admin
from django.urls import path
from blog.views import *

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', indexes),
    path('blog/', index),
    path('start/', start_scrapy),
]

2.Settings.py中添加应用配置

import pymysql  #引用mysql驱动
pymysql.install_as_MySQLdb()

ALLOWED_HOSTS = ["*"]#允许全部主机访问

# Application definition

INSTALLED_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',
    }
}

3.编写models

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)

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

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

from django.contrib import admin
from blog.models import Blog, Spider

class 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 = '牛逼轰轰'

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

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

5.编写views.py

import base64
from io import BytesIO

import requests
from django.http import JsonResponse
from django.shortcuts import render
import markdown
# Create your views here.

import blog.models as m
import pandas as pd
import matplotlib
from 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配置你的路径到环境中(具体配置请百度)

5.在终端中运行服务:

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

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

项目源代码:pystudy_jb51.rar

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

(0)

相关推荐

  • python django 增删改查操作 数据库Mysql

    下面介绍一下django增删改查操作: 1.view.py # -*- coding: utf-8 -*- from __future__ import unicode_literals from django.http import HttpResponse from polls.models import Test from django.shortcuts import render # Create your views here. # 解决乱码 import sys reload(sy

  • Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统

    1 准备工作 1.1 环境搭建 1.1.1 安装python3.6 python安装官网 1.1.2 安装django2.2 pip install django(==2.2.0) //不加版本默认安装最新版 1.1.3 安装pycharm(社区版,官网下载安装即可) 在安装完成后要配置好需要的第三方库:(pip下载,推荐在pycharm下也配置虚拟环境) Django2.2 连接mysql需要的库:PyMySQL, mysql, mysqlclinet 验证码用到的库:django-simpl

  • Django1.7+python 2.78+pycharm配置mysql数据库教程

    配置好virtualenv 和virtualenvwrapper后,使用pycharm创建新项目.之后要面临的问题就来了,之前一直使用的是sqlite作为开发数据库进行学习,按照之前看教程的原则,好像就是说开发环境要和生产环境尽量的一致,所以现在想尝试一下使用更有可能在生产环境部署的mysql数据库进行开发. 本觉得是一件应该很轻松的事情,没想到遇到了一些麻烦 根据一通百度,搜出来的方案大概有: MySQLdb mysql安装时候自带的connector pymysql MySQLdb 是dja

  • 教你用Python3+mysql8.0搭建Django框架

    一.安装python 基础环境:centos7.6 安装: 下载python: https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tgz 解决依赖性: yum install gcc openssl-devel bzip2-devel libffi-devel install gcc-c++ 解压: tar zxf Python3.8.2.tgz 切换到解压后的文件并编译: cd Python-3.8.2 ./configure --pre

  • python3.6+django2.0+mysql搭建网站过程详解

    之前用过python2.7版本,改用3.6版本发现很多语法发生了变化. 在templates里新建一个html文件,命名为index.html作为要测试的界面, 新建一个应用,Tools->Run manage.py Task 输入startapp+应用名称 然后对urls进行配置,配置如下: from django.conf.urls import url from . import views urlpatterns = [ url(r'^index/', views.index), ] 在

  • 在python3环境下的Django中使用MySQL数据库的实例

    我们在使用Django过程中,数据库往往是离不开的,比较长常用的是MySQL数据库,但在使用过程中,对Python不同的版本对用的库也不一样,用惯了Python2的人在使用Python3时经常会遇到下面的错误: Error loading MySQLdb module: No module named 'MySQLdb'. 这是因为Python3 MySQL的支持库为pymysql所致,所以我们要下载pymysql数据库. 并且在站点文件夹下的__init__.py(project同名目录下,而

  • Python+Django+MySQL实现基于Web版的增删改查的示例代码

    前言 本篇使用Python Web框架Django连接和操作MySQL数据库学生信息管理系统(SMS),主要包含对学生信息增删改查功能,旨在快速入门Python Web,少走弯路.效果演示在项目实战最后一节,文章结尾有整个项目的源码地址. 开发环境 开发工具:Pycharm 2020.1 开发语言:Python 3.8.0 Web框架:Django 3.0.6 数据库:MySQL5.7 操作系统:Windows 10 项目实战 1. 创建项目 File->New Project->Django

  • python+Django+pycharm+mysql 搭建首个web项目详解

    本文实例讲述了python+Django+pycharm+mysql 搭建首个web项目.分享给大家供大家参考,具体如下: 前面的文章记录了环境搭建的过程,本节记录首个web项目调试 首先检查安装的模块,输入dos命令 pip list, 会显示已安装的模块,看是否有Django,PyMySQL模块 C:\Users\Administrator\PycharmProjects>pip list DEPRECATION: The default format will switch to colu

  • python+django+mysql开发实战(附demo)

    开发工具:pycharm 环境:python3.7.4(例子中用的3.6)下载安装pycharm:http://www.jetbrains.com/pycharm/download/#section=windows分为社区版和专业版,一个免费一个收费Pycharm2021破解版下载: https://www.jb51.net/softs/598504.html下载安装python:https://www.python.org/downloads/windows/安装好开发工具和python环境后

  • Python django框架开发发布会签到系统(web开发)

    引言 最近学习了虫师的发布会签到系统demo,结合自己所学django知识,对demo重新塑造了一下.也是为了练练手,巩固知识.现在就分享一下成果~ Django工作流 学习django web开发,先来简单了解一下django的工作机制,请看下图: 简单说明: 用户通过浏览器访问:http://127.0.0.1:8000/index,首先运行的是urlpatterns程序,通过url路由找到对应的视图函数views.py,视图函数处理所有逻辑和数据,并且将用户要的数据经过函数处理后通过ind

  • C# 拼图游戏的实战(附demo)

    目录 一.项目分析 1.用户需求分析 2.系统设计思路 3.系统模块划分 二.项目设计 1.各个子模块的设计方法 板块一:注册用户并进行登录. 板块二:导入图片. 板块三:设置关卡所能选的难度. 版块四:拼图是否完成的判断. 板块五:切割图片. 板块六:打乱拼图. 板块七:重排图片,反映现在拼图的状况. 板块八:切成图后的小图片移动. 2.设计核心技术 三.项目测试 四.结论 一.项目分析 项目分析简要说明项目主要用户需求.设计思路及模块划分. 1.用户需求分析 在当今社会,人们的生活压力越来越

  • vscode搭建python Django网站开发环境的示例

    这里使用pip安装的方式,打开命令行,输入执行: pip install django==2.2 这里选择安装2.2版本是因为是新的lts版本,长期支持稳定版. 接下来再安装pillow,Django底层一部分是基于pillow进行的. pip install pillow pylint在面对django框架时表现的有些不足,所以我这里选择安装 pip install pylint_django 在vscode中安装Django:Django 的插件,用于模板中语法提示和补全,这里我们选择1.0

  • 在Linux系统上部署Apache+Python+Django+MySQL环境

    Linux+apache+mysql+python+mod_python+Django 说明:系统rhel 5.3,默认安装httpd.mysql,没有安装的,请下载安装RPM包,删除/etc/httpd/modules/mod_python.so,如果有的话. 一.安装python wget http://www.python.org/ftp/python/2.7.1/Python-2.7.1.tgz  tar xfz mod_python-2.7.11.tgz cd python-2.7.1

  • 教你如何将 Sublime 3 打造成 Python/Django IDE开发利器

    1. 安装 Sublime Text 3 虽然现在的 Sublime 3 还处于 beta 阶段, 但已经非常稳定了, 而且速度比 Sublime 2 得到了增强. Sublime 3 可以到官网下载并安装. Sublime 虽然是免费软件, 但如果有足够的经济能力, 可以考虑购买以表示支持. 2. 安装 Package Control Sublime Package Control 可以说是必须安装的插件, 因为其方便的提供了安装/升级/删除 Sublime 插件的功能, 安装方法见Packa

  • Python+Django搭建自己的blog网站

    一.前言 1.1.环境 python版本:3.6 Django版本:1.11.6 1.2.预览效果 最终搭建的blog的样子,基本上满足需求了.框架搭好了,至于CSS,可以根据自己喜好随意搭配. 二.建立博客应用 2.1.建立项目和应用 创建工程blogproject python manage.py startproject blogproject 创建blog应用 python manage.py startpapp blog 打开 blogproject\ 目录下的 settings.py

  • 教你安装python Django(图文)

    安装环境:python版本2.7.5 ,win7系统安装Djangohttps://www.djangoproject.com/download/ 官方下载Django-1.5.5.tar.gz1,解压后(我的目录是D:\myapp\Django-1.5.5)2,DOS命令到刚解压后的Django-1.5.5目录下执行命令 python setup.py install , 结果如下图: 说明:Django安装命令实际是将Django复制到本地Python安装目录D:\Python27\Lib\

  • Python+Django在windows下的开发环境配置图解

    1         安装配置开发环境 1.1   准备安装 下载以下软件 Eclipse for C/C++ SUN JDK 1.6 不一定要1.6,1.5的也可以 Python3.1  Python2.6.4  Pythone2.5.2 mod_python-3.3.1.win32-py2.5-Apache2.2 MySQL-python-1.2.2.win32-py2.5 pysqlite-2.5.5.win32-py2.5 python.pydev.feature-1.5.0.125198

随机推荐