关闭

搭建环境

标签: django仿天猫
357人阅读 评论(0) 收藏 举报
分类:

Django仿天猫项目

一、 创建虚拟环境

  • python版本:python3
  • windows下python虚拟环境管理工具virtualenv & virtualenvwrapper
mkvirtualenv django_tmall
workon django_tmall

二、 下载并安装xadmin

xadmin的安装文档: https://xadmin.readthedocs.io/en/latest/quickstart.html

有两种安装方式,这里选择源码安装
下载xadmin

# git clone 方式下载
git clone git@github.com:sshwsfc/django-xadmin

# 解压并进入目录
# 安装需要的包
pip install -r requirements.txt

requirements.txt中的包有:

django~=1.9.0
django-crispy-forms~=1.6.0
django-reversion~=2.0.0
django-formtools==1.0
future==0.15.2
httplib2==0.9.2
six==1.10.0

所以项目的Django版本是1.9.13

创建项目所需的mysql数据库

数据库名: django_tmall
为本项目创建一个用户,用户名:djangotmall
用户密码:djangotmall321
权限:该用户拥有对django_tmall数据库的所有权限

这里写图片描述

这里写图片描述

三、 创建Django项目

  • 使用Pycharm创建Django项目,并指定上面步骤创建的虚拟环境
  • 新建apps, extra_apps, media, static 等文件夹,并在 apps, extra_apps下添加init.py空文件
  • 将xadmin源码复制到extra_apps下

这里写图片描述

  • 修改settings.py

    import sys
    
    os.path.join(BASE_DIR, ...)
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    
    
    # 将apps和extra_apps添加Django的路径中
    
    sys.path.insert(0, os.path.join(BASE_DIR,'apps'))
    sys.path.insert(0, os.path.join(BASE_DIR,'extra_apps'))
    
    
    # INSTALLED_APPS中添加xadmin
    
    INSTALLED_APPS = [
        ……
        'xadmin',
        'crispy_forms',
        'reversion',
    ]
    
    
    # 将修改数据库配置,改为mysql
    
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': "django_tmall",
            'USER': 'djangotmall',
            'PASSWORD': "djangotmall321",
            'HOST': "127.0.0.1"
        }
    }
    
    
    # 系统语言配置,改为中文
    
    LANGUAGE_CODE = 'zh-hans'
    TIME_ZONE = 'Asia/Shanghai'
    
    
    # 添加资源路径
    
    STATIC_URL = '/static/'
    STATIC_ROOT = os.path.join(BASE_DIR, 'static')
    MEDIA_URL = '/media/'
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
  • 安装mysql驱动

pip install pymysql

在项目settings.py同目录下的init.py中添加

import  pymysql
pymysql.install_as_MySQLdb()
  • 迁移数据库
python manage.py makemigrations
python manage.py migrate
  • 创建超级用户
python manage.py createsuperuser

遇到的问题

我最开始安装的Django的版本是1.10,用该版本创建的Django的settings.py中

这里写图片描述

而后来pip install -r requirements.txt 安装xadmin的requirements后的Django的版本变为了1.9.13,而Django1.9~及之前的版本settings.py中应该是这样
这里写图片描述

由于版本变动的问题,没有改正MIDDLEWARE_CLASSES,所以访问http://127.0.0.1:8000/xadmin/ 的时候报下面的异常:
AttributeError: ‘WSGIRequest’ object has no attribute ‘user’

Internal Server Error: /xadmin/
Traceback (most recent call last):
  File "E:\Envs\django_tmall\lib\site-packages\django\core\handlers\base.py", line 149, in get_response
    response = self.process_exception_by_middleware(e, request)
  File "E:\Envs\django_tmall\lib\site-packages\django\core\handlers\base.py", line 147, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "E:\小旋锋的文件\大三下-课程\django仿天猫\django_tmall\extra_apps\xadmin\sites.py", line 300, in wrapper
    return self.admin_view(view, cacheable)(*args, **kwargs)
  File "E:\Envs\django_tmall\lib\site-packages\django\views\decorators\cache.py", line 57, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "E:\小旋锋的文件\大三下-课程\django仿天猫\django_tmall\extra_apps\xadmin\sites.py", line 206, in inner
    if not self.has_permission(request) and getattr(view, 'need_site_permission', True):
  File "E:\小旋锋的文件\大三下-课程\django仿天猫\django_tmall\extra_apps\xadmin\sites.py", line 161, in has_permission
    return request.user.is_active and request.user.is_staff
AttributeError: 'WSGIRequest' object has no attribute 'user'
[01/Jul/2017 19:06:09] "GET /xadmin/ HTTP/1.1" 500 78215

这里写图片描述

把settings.py中的MIDDLEWARE改为MIDDLEWARE_CLASSES即可正常访问

0
0
查看评论

搭建环境需要注意的事项

搭建环境是做项目里面最烦的事情,首先搭建环境本身鼓噪无味,而且由于是处于搭建环境的阶段,所以对项目本身及相关知识肯定不太熟悉,所以搭建的时候基本是0基础,这样搭建起来只能跟着教程一步一步走,这里说说注意事项: 1,尽量选取时间靠后的教程,毕竟信息时代讯息万变,教程对时间的要求也是极高的,很有可能仅...
  • modiziri
  • modiziri
  • 2014-04-24 15:42
  • 1097

linux搭建ngnix环境

1.Nginx  1.1Nginx简介  Nginx是俄罗斯人开发,开源的,免费的。  Nginx功能:  1)nginx作为http服务器:类似apache,tomcat,遵循http协议。  a)访问图片服务器,加载图片  ...
  • especialjie
  • especialjie
  • 2016-09-22 12:00
  • 399

搭建环境

第一种方法 1去官方下载 www.eclipse.org 下载 eclipse-SDK-4.2.2-win32.zip (注意安卓的新版本不支持3.5了,请用3.6以上) 2解压eclipse压缩包到 E:/tool 下 3下Eclipse支持Andriod的ADT(也就是Eclipse开发andr...
  • www100204
  • www100204
  • 2014-02-14 14:11
  • 485

磨刀不误砍材工 - 环境搭建(为什么要配置环境变量)

就如同,如果我们想要游泳,前提是需要一个泳池;如果我们想要打篮球,前提是需要一个篮筐一样。 如果我们想要使用Java语言进行开发工作或者想要运行由Java语言编写的程序,那么第一步工作就是搭建一个支持Java语言的环境。 首先我们需要认识Java为我们提供的这两样东西: JRE - Java ...
  • ghost_Programmer
  • ghost_Programmer
  • 2015-01-08 17:00
  • 2025

兔子--MyEclipse中搭建数据库环境

选择Myeclipse Database Exployer perspective 打开后视图如下图: 右键MyEclipse Derby,点击new,出现如下视图,选择数据库的驱动,我用的是mysql 选择mysql,注意引入需要的jar,写好数据库连接信息 ...
  • u013425527
  • u013425527
  • 2014-12-24 10:07
  • 606

linux 下使用mapscript开发wms环境搭建篇

libmapscript.so路径配置我在.bashrc 和.bash_profile中都分别配置了LD_LIBRARY_PATH,但是eclipse和tomcat 都不能找到这个路径,也就是不能找到libmapscript.so,所以不得以我修改了tomcat的启动startup.sh,加入exp...
  • zhongguolong_mei
  • zhongguolong_mei
  • 2010-04-29 19:14
  • 374

centos 7 minal 搭建ffmpeg+segmenter环境

在centos上安装软件  最方便的方式就是使用yum  , 自动解决依赖关系, 没有那么麻烦! 需要手动添加yum源配置/etc/yum.repos.d/dag.repo: [dag] name=Dag RPM Repository for ...
  • qq_34777982
  • qq_34777982
  • 2017-10-15 17:47
  • 514

第一次用springmvc+mybatis搭建环境

没有什么特别的,就是平时先来无事的时候,正好我们新框架用springmvc+mybatis做的,所以就想熟悉一下。 下面就把我这两天弄环境遇到的问题记录一下,已被下次参考。毕竟时间久了就忘了。 虽然只是搭建一个环境,可是总是遇到一些莫名奇妙的问题,然后去查资料,真的也是挺费时间的...
  • rumidavid
  • rumidavid
  • 2017-05-12 20:35
  • 191

Spring Boot简单环境配置

Spring Boot简单环境搭建 一、创建一个简单的Maven项目 使用Maven,通过导入Spring Boot的starter模块,可以将许多程序依赖的包自动导入到工程中。使用Maven的parent POM,还可以更加容易地管理依赖的版本和使用默认的配置,工程中的模块也可以很方便地继承它...
  • Lammonpeter
  • Lammonpeter
  • 2017-10-29 23:21
  • 94

第92讲:Akka第一个案例动手实战开发环境的搭建

第92讲:Akka第一个案例动手实战开发环境的搭建 1 下载安装intellij IDEA 2 IDEA 自动集成了各类插件,使用自然       DT大数据微信公众账号:DT_Spark   DT大数据梦工厂scala的所有视频、PPT和代码...
  • duan_zhihua
  • duan_zhihua
  • 2015-09-20 08:14
  • 311
    个人资料
    • 访问:121208次
    • 积分:2637
    • 等级:
    • 排名:第16327名
    • 原创:136篇
    • 转载:56篇
    • 译文:0篇
    • 评论:36条
    博客专栏