爸妈离婚,就因为爸爸向妈妈养的兰花盆里弹烟灰…… 当前位置:首页>爸妈离婚,就因为爸爸向妈妈养的兰花盆里弹烟灰……>正文

爸妈离婚,就因为爸爸向妈妈养的兰花盆里弹烟灰……

发布时间:2019-03-21

原标题:class

创作背景:

  在某论坛中下载到一套php开发易语言网络验证的教程,照着看下来,花了两天的时间,结果发现教程里开发的网络验证,以及随着教程一起给学员的源码,都存在着根本用不了的bug!我想要看看能不能在原本的基础上修改,却出现了一大堆坑,不是这儿少个$ ,就是那少个 ;  要不就是哪{}包的不对了,擦,不是说php是世界上最好的语言吗?怎么感觉是世界上最坑的语言呢?

  也许因为一般的程序员都是从C启蒙,进而C++,后又转Java,忽然见到php,顿时感觉简单明快,好像见到亲人了似的;而我易语言启蒙,进而学python,连用到JavaScript我都神烦其要弄那么多花括号,还要声明变量什么的,简直麻烦透顶,更不用提php了,简直觉得php就是一块儿被烤化了的牛皮糖,黏黏糊糊,一坨代码扑过来,总有些边边角角bug的弄得你浑身难受。

  于是,我只好怒而用python,祭出django,开发一个易语言网络验证喽!其实这也是被逼无奈,毕竟,php垃圾是垃圾了点,好在开发完了,部署极为简单,而django项目的上线部署就……一言难尽了。

第一步:常规操作,新建一个django项目并连接mysql数据库

(下载安装mysql、下载安装python3、下载安装pycharm注册激活什么的,在这里就不赘述了,就当大家都知道了哈)

1.新建数据库:

  1.打开MySQL Command Line Client (windows 桌面→开始→所有程序→MySQL→MySQL Server5.7 目录下)

  2.输入数据库密码,进入数据库,然后敲代码:

show databases; #看看mysql中已经有的数据库名,新建的数据库别起重名了
create database netauth; #创建数据库 netauth (netauth是数据库名,可以自定义)

2.新建django项目:

  1.新建django项目:打开pycharm→File→New Preject→Django→取个项目名:netauth→More Settings→取个app名:yanzheng

  2.新建静态文件目录:static、media、log

  1.新建目录

  2.在settings.py中配置目录,在settings.py的末尾,找到相关代码,补全为以下代码:

STATIC_URL = "/static/"
STATICFILES_DIRS=(os.path.join(BASE_DIR,  "static"),)
TEMPLATE_DIRS = (os.path.join(BASE_DIR,  "templates"),)
MEDIA_URL="/media/"
MEDIA_ROOT=os.path.join(BASE_DIR,"media")

  3.在项目netauth目录下的urls.py中配置media路径,增加代码,补全为:

复制代码
from django.contrib import admin
from django.urls import path

from django.views.static import serve
from netauth.settings import MEDIA_ROOT


urlpatterns = [
    path("admin/", admin.site.urls),
    #配置上传文件的访问处理函数
    path("media/<path:path>",serve,{"document_root":MEDIA_ROOT}),
]
复制代码

补充:在settings.py中添加模板文件路径:

TEMPLATES = [
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "DIRS": [os.path.join(BASE_DIR,  "templates"),],
        "APP_DIRS": True,
        "OPTIONS": {
            "context_processors": [
                "django.template.context_processors.debug",
                "django.template.context_processors.request",
                "django.contrib.auth.context_processors.auth",
                      "django.contrib.messages.context_processors.messages",
              
#添加media路径
                "django.template.context_processors.media",
            ],
        },
    },
]
View Code

 

  3.建立django项目与mysql数据库链接:

  1.在项目netauth目录下的__init__.py中加入代码:

import pymysql
pymysql.install_as_MySQLdb()

  2.settings.py配置文件中找到DATABASE进行改写:

  

复制代码
DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.mysql",
        "NAME": "netauth",
        "USER":"root",
        "PASSWORD":"(数据库密码)",
        "HOST":"127.0.0.1",
        "PORT":"3306",
        "OPTIONS":{"init_command":"SET default_storage_engine=INNODB;"}
    }
}
复制代码

  3.打开Terminal 执行更新数据库的两条经典的命令:

python manage.py makemigrations

python manage.py migrate

 

 

  4.在pycharm直观的管理数据库(类似于php的phpadmin,然而没有那么难用):

1.点击Database按钮→点击+号→点击MySQL

 

 2.输入数据库名、数据库用户名、数据库密码 → 点击Test Connection 按钮,提示Successful代表链接成功,点击ok即可!

3.查看:再点击Database→点击netauth@localhost→点击netauth 即可看到django自动生成的十张表,可以随意点击进去查看,进行增删操作。

   5.建立自定制的用户表:

1.在yanzheng/models.py中写代码:from django.db import models

 

from django.db import models
from django.contrib.auth.models import AbstractUser
from datetime import datetime
# Create your models here.


class UserProfile(AbstractUser):
    end_time=models.DateTimeField(default=datetime.now, verbose_name="到期时间")

    class Meta:
        verbose_name="用户信息"
        verbose_name_plural=verbose_name
    def __str__(self):
        return self.username

 

 

 

2.在settings.py 中加入代码:

AUTH_USER_MODEL="yanzheng.UserProfile"

3.开始→所有程序→MySQL→ MySQL Server 5.7→ 打开MySQL Command Line Client.exe 输入密码,进入操作界面,执行以下命令:

#删除netauth数据库,再重建netauth,两次数据库名必须一样
drop database netauth;
create database netauth;

4.回到django项目下,打开Terminal终端,执行经典的更新数据命令:

python manage.py makemigrations
python manage.py migrate

  6.新建超级用户:

1.打开Terminal终端,执行:

python manage.py createsuperuser

Username:用户名
Email:邮箱
Password:自定义一个不少于8位的密码(密码不显示的)
Password(again):确认密码

2.在settings.py找到LANGUAGE_CODE,将相关代码改为使用中文:

LANGUAGE_CODE = "zh-hans"

TIME_ZONE = "Asia/Shanghai"

USE_I18N = True

USE_L10N = True

USE_TZ = False

 

3.运行django项目:

方法一:点击pycharm运行按钮

方法二:执行命令:

python manage.py runserver

运行成功后,只要浏览器访问:http://127.0.0.1:8000/admin就可以来到xadmin的后台管理界面,通过刚刚创建的超级用户账户密码就可以登录。

第二步:安装配置xadmin

什么是xadmin:

  网上有很多定义和解释,基本上都让不了解xadmin的人看完了更迷糊!既然是解释,就要让读者能一下子明白嘛!

  xadmin在python的领域就相当于php领域的dz论坛和WordPress的高度可定制版后台!

  更通俗点讲,xadmin就像是你的qq空间,但是比qq空间的可定制化高一千倍,能够方便的管理你的各种数据(类比于你qq空间中的日志、说说、签名、照片……)

1.django2下安装xadmin

 1.xadmin的django2下载地址:https://github.com/sshwsfc/xadmin/tree/django2

 2.打开地址→确认下载的是django2的,点击Clone or download→点击Download ZIP→选择下载到一个没有中文的目录下→点击下载

 

3.打开Terminal执行安装命令:

pip install --cache-dir
pip install d:/xadmin-django2.zip

4.安装一些必要的库文件:

pip crispy_forms
pip reversion

 

5.打开settings.py 找到INSTALLED_APPS 追加:

INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "yanzheng.apps.YanzhengConfig",
 #追加代码:   
    "xadmin",
    "crispy_forms",
    "reversion",
]

6.给urls.py中增加两行代码,就算是给xadmin配置路由了:

from django.contrib import admin
from django.urls import path
#引入xadmin
import xadmin

urlpatterns = [
    path("admin/", admin.site.urls),
 #配置xadmin路由   
    path("xadmin/", xadmin.site.urls),
]

7.安装配置好了,不要忘了更新数据库,打开Terminal,执行经典的两条命令:

python manage.py makemigrations
python manage.py migrate

8.重新运行项目,浏览器访问http://127.0.0.1:8000/xadmin/  即可看到xadmin的登录界面(上次登录admin的时候如果没注销登出,因为cookie的缘故,会直接出现已经登录的界面。)

2.django2下配置xadmin

1.至此成功登录了,但是由于后面还要自定义一些xadmin的插件(比如一键导出生成的卡密插件),所以要将xadmin导入项目中:

1.在项目netauth目录下,新建apps和extra_apps,将yanzheng拖入apps目录下。

2.在d盘目录下找到下载的xadmin-django2.zip,右键解压文件→确定,解压后的文件夹中,找到xadmin-django2/xadmin-django2目录下的xadmin文件夹,复制到项目中extra_apps目录下,注意Search for reference 和Open moved files in editer 都不要勾选!

 

3.extra_apps右键→Mark Directory as→Sources Root(对apps目录也要做同样的事

4.在settings.py 中,找到:BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))),import sys 添加补全代码为:

import os,sys

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0,os.path.join(BASE_DIR,"apps"))
sys.path.insert(1,os.path.join(BASE_DIR,"extra_apps"))

.5.打开Terminal终端,卸载最先安装的xadmin

pip uninstall xadmin
y

不要觉得先安装,又导入,又卸载,这个过程有什么可以省略的,一步也不能少,不然掉到坑里,爬不上来哦。

第三步:数据库开发

1.在apps/yanzheng/models.py中,将网络验证相关的表建完(其实就俩表,还都很简单):

from django.db import models
from django.contrib.auth.models import AbstractUser
from datetime import datetime
# Create your models here.


class UserProfile(AbstractUser):
    is_ban=models.BooleanField(default=False,verbose_name="是否被禁")
    end_time=models.DateTimeField(default=datetime.now, verbose_name="到期时间")

    class Meta:
        verbose_name="用户信息"
        verbose_name_plural=verbose_name
    def __str__(self):
        return self.username


class Cards(models.Model):

    """充值卡"""
    user=models.ForeignKey(UserProfile,verbose_name="使用者",on_delete=models.CASCADE)
    kacode=models.CharField(max_length=50,verbose_name="卡密",default="")
    time=models.IntegerField(default=3600,verbose_name="时长")
    is_used=models.BooleanField(default=False,verbose_name="是否已经使用")
    add_time=models.DateTimeField(default=datetime.now,verbose_name="生成时间")
    class Meta:
        verbose_name="卡密"
        verbose_name_plural=verbose_name
    def __str__(self):
        return self.kacode

打开Terminal,执行数据更新命令:

python manage.py makemigrations
python manage.py migrate

这里有一个坑:

  数据更新的时候,如果数据类中,有DateTimeField字段,只能在第一次创建时,数据更新命令能成功,如果已经执行了数据更新命令,再修改DateTimeField字段的默认值,就会时间格式不对的错误,很烦人!

  解决办法:将apps/yanzheng/makemigrations目录下,除了__init__.py以外的文件都删掉,再执行数据更新命令,就可以了。

 

 

  篇幅有限,整套网络验证开发教程,我计划分为三篇来写:

  第一篇就是今天写的,服务器端MTV中的MT部分已经写完;

  第二篇写服务端的V部分,以及客户端易语言部分;

  第三篇计划写django项目上线部署。

 

当前文章:http://aluminumalloyformwork.com/5gqlh.html

发布时间:2019-03-21 07:16:11

何谓教养? 爸妈离婚,就因为爸爸向妈妈养的兰花盆里弹烟灰…… 我与凤凰相机的尴尬经历 姐弟恋,如何才能终成眷属? 你不是讨厌工作,你是讨厌你自己 北京高考新政的N个变化 从四大名著浅说团队 比直男癌更恶心的,是直女癌 王石的爱情 哪个朝代当官好?

58190 71319 40243 94118 56221 94375 86730 58285 13228 99619 12552 72668 82172 42013 86476 75088 24942 99609 54213 48539 63893 10931 17360

责任编辑:杜通

随机推荐