windows下新建django项目

将创建django的步骤记录下来

准备工作

  1. python的安装、虚拟环境配置及包管理
  2. 配置数据库
    1. MySQL
    2. SQLServer的配置见我另一篇随笔https://blog.csdn.net/weixin_38848757/article/details/114867367

以上完成后

1、创建虚拟环境:mkvirtualenv 虚拟环境名称

2、虚拟环境下安装django:

pip install django==版本号

3、创建项目:

django-admin startproject 项目名称

建议参照我另一篇随笔 https://blog.csdn.net/weixin_38848757/article/details/114833020 优化项目结构

如果优化后的项目在使用 pycharm 控制台时遇到如下报错

可以这样更改 django 源码

# lib\site-packages\django\conf\__init__.py
class LazySettings(LazyObject):
    def _setup(self, name=None):
        # 原来:
        # settings_module = os.environ.get(ENVIRONMENT_VARIABLE)
        # 更改为:
        settings_module = os.environ.get(ENVIRONMENT_VARIABLE) or 'settings.dev'
        # 其他代码保持原样不要改动,这个问题只会出现在开发环境中,生产环境下不会遇到,也不用更改 django 源代码

4、注意:如果是通过命令行创建项目,还需要在 Pycharm => File => Settings => Project => Python Interpreter 中关联虚拟环境

5、虚拟环境下安装安装 mysql 驱动(如有需要):

pip install pymysql

pip install mysqlclient

6、修改 settings.py :https://www.cnblogs.com/brucezhang2017/articles/8408736.html

  • DATABASES = { ... }
  • 静态文件路径
STATICFILES_DIRS = [ 
    os.path.join(BASE_DIR, "statics"), 
]
  • 其他
LANGUAGE_CODE = 'zh-hans'

TIME_ZONE = 'Asia/Shanghai'

USE_TZ = True

 

7、配置用户表 注意在此步骤之前不要进行数据库mig操作

  • from django.contrib.auth.models import AbstractUser,创建用户信息表
  • settings中加入app名称以及AUTH_USER_MODEL=’app名称.用户信息表名’
  • makemigrations ,migrate

8、配置xadmin:

  • 先在虚拟环境下安装依赖:
    pip install django-crispy-forms django-reversion django-formtools future httplib2 six
    pip install xlwt xlsxwriter

     

  • 然后从git上下载xadmin源码:https://gitee.com/TomatoChewgum/xadmin_django3.x并拷贝至项目中,建议单独建个与apps平级的目录存放,或直接 pip 安装
    pip install https://codeload.github.com/sshwsfc/xadmin/zip/django2    # django2.x可用
    pip install git+git://github.com/sshwsfc/xadmin.git    # django3.x可用

     

  • 在settings.py中配置xadmin:
    INSTALLED_APPS = [
        ……
        'crispy_forms',
        'xadmin',
    ]

     

然后mig数据库,几个报错的处理方式


#错误一:No module named 'django.core.urlresolvers
#原因:django2.0 把原来的 django.core.urlresolvers 包更改为了 django.urls包。解决:把导入的包都修改一下就可以了。

#错误二:cannot import name 'six' from 'django.utils'
#原因:django的版本太新了。解决:用django2;或把
from django.utils import six
#改成
import six

#错误三:cannot import name 'python_2_unicode_compatible' from 'django.utils.encoding'
from django.utils.encoding python_2_unicode_compatible
#改成
from six import python_2_unicode_compatible
    
#错误四:No module named 'django.contrib.staticfiles.templatetags'
from django.contrib.staticfiles.templatetags.staticfiles import static
#改成
from django.templatetags.static import static

#错误五:cannot import name 'FieldDoesNotExist' from 'django.db.models.fields'
from django.core.exceptions import FieldDoesNotExist

#错误六:No module named 'import_export'
pip install django-import-export 

#错误七:cannot import name 'SKIP_ADMIN_LOG' from 'import_export.admin'
#修改报错文件的代码,引入需要的类,用类调用方法,以此获取变量
#报错的引入方式:from import_export.admin import SKIP_ADMIN_LOG, TMP_STORAGE_CLASS
#正确引入方式
from import_export.admin import ImportExportMixinBase
#然后重新赋值那两个报错的变量:
SKIP_ADMIN_LOG = ImportMixin().get_skip_admin_log()
TMP_STORAGE_CLASS = ImportMixin().tmp_storage_class

 创建超级用户

python manage.py createsuperuser

urls.py中将django自带的管理系统替换掉

import xadmin

urlpatterns = [
    # path('admin/', admin.site.urls),
    url(r'xadmin/', xadmin.site.urls),
]

settings.py:

LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False    #True为UTC时间

为app设置别名:

# 每个app下,apps.py
class UsersConfig(AppConfig):
    name = 'users'
    verbose_name = '用户'

在每个app路径下创建adminx.py文件

依赖包管理

  • 生成requirements.txt
pip freeze --all > requirements.txt
  • 需要生成本项目而不是整个虚拟环境需要的模块列表,那么需要
pip install pipreqs
pipreqs ./
  • 执行requirements文件
pip install -r requirements.txt

配置rest_framework

官网:https://www.django-rest-framework.org/

  • 安装drf及大概率用到的包
pip install django-guardian
pip install coreapi
pip install djangorestframework
pip install markdown
pip install django-filter
  • 在settings.py中配置添加'rest_framework'
INSTALLED_APPS = [
    ...
    'rest_framework',
    'django_filters',
]
  • urls.py中加入drf登录的配置:
from django.conf.urls import url, include

urlpatterns = [
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值