ecommerce_website_development

本项目基于Django1.8.2等来开发一个电商平台,可实现注册、登录、浏览、购买、支付等全部常用功能。

运行方式:

修改如下文件的名称:去掉.example

重点内容有:

详细代码说明

运行环境:

见requirements.txt:运行如下命令可安装

pip install -r requirements.txt

amqp==2.2.2 anyjson==0.3.3 billiard==3.5.0.3 celery==4.1.0 certifi==2018.1.18 chardet==3.0.4 Django==1.8.2 django-bootstrap3==9.1.0 django-celery==3.2.2 django-celery-results==1.0.1 django-haystack==2.7.0 django-redis==4.7.0 django-tinymce==2.7.0 fdfs-client-py==1.2.6 idna==2.6 itsdangerous==0.24 jieba==0.39 kombu==4.1.0 mutagen==1.40.0 Pillow==5.0.0 pycryptodomex==3.5.1 PyMySQL==0.8.0 python-alipay-sdk==1.7.0 pytz==2018.3 redis==2.10.6 reportlab==3.4.0 requests==2.18.4 urllib3==1.22 uWSGI==2.0.17 vine==1.1.4 Whoosh==2.7.4

代码中未有的常见问题:

一个常见的问题: mySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据

相关知识点:

限制用户短时间内登录次数的问题:

"""用列表实现:列表中每个元素代表登陆时间,只要最后的第5次登陆时间和现在时间差不超过1小时就禁止登陆"""
"""
请用Redis和任意语言实现一段恶意登录保护的代码,限制1小时内每用户Id最多只能登录5次
"""
import redis
import sys
import time

r = redis.StrictRedis(host='127.0.0.1', port=6379, db=1)
try:
    id = sys.argv[1]
except:
    print('input argument error')
    sys.exit(0)
# 将每次登陆的时间存入redis的名为login_item列表中,判断列表元素个数是否已达到5并且和第一次登录时间比较是否在一个小时以内。
if r.llen('login_item') >= 5 and (time.time() - float(r.lindex('login_item', 4)) <= 3600):
    print('you are forbidden logining')
else:
    print('you are allowed to login')
    r.lpush('login_item', time.time())