• Django 2.0.7 使用小知识


    Django 2.0.3 使用小知识

    运行环境:

    Python 3.6.4

    Django 2.0.7


    Django Admin中model显示为中文

    定义model时,定义一个Meta对象,设置需要显示的中文名称。verbose_name为单数名称,verbose_name_plural为复数名称。因为中文没有区分单数、复数,所以都定义为一样的名称。

    from django.db import models
    
    class Article(models.Model):
    
        class Meta:
            verbose_name = '文章'
            verbose_name_plural = '文章'
    

    Django Admin中model字段显示为中文

    定义model时,在每个字段后增加verbose_name,如下例子中的title

    class Article(models.Model):
    
        class Meta:
            verbose_name = '文章'
            verbose_name_plural = '文章'
    
        title = models.CharField(max_length=256, verbose_name='标题')
    

    Django Admin中的app显示为中文

    在需要自定义名称的app中(假设app目录的blog),做如下修改

    # blog/apps.py
    from django.apps import AppConfig
    
    class BlogConfig(AppConfig):
        name = 'blog'
        verbose_name = '个人博客'
    
    # blog/__init__.py
    default_app_config = 'blog.apps.HealthConfig'
    

    警告:?: (urls.W005) URL namespace 'admin' isn't unique. You may not be able to reverse all URLs in this namespace

    在urls.py中的urlpatterns中重复定义了admin,所以会有此警告,将重复定义的url注释掉即可。

    urlpatterns = [
        url('', admin.site.urls),
        url(r'^jet/', include('jet.urls', 'jet')),
        # 注释掉此行
        # url(r'^admin/', admin.site.urls),
        url(r'^blog/', include('blog.urls')),
    ]
    

    Django 时区设置

    此笔记为转载

    在Django的配置文件settings.py中,有两个配置参数是跟时间与时区有关的,分别是TIME_ZONEUSE_TZ

    如果USE_TZ设置为True时,Django会使用系统默认设置的时区,即America/Chicago,此时的TIME_ZONE不管有没有设置都不起作用。

    如果USE_TZ 设置为False,而TIME_ZONE设置为None,则Django还是会使用默认的America/Chicago时间。若TIME_ZONE设置为其它时区的话,则还要分情况,如果是Windows系统,则TIME_ZONE设置是没用的,Django会使用本机的时间。如果为其他系统,则使用该时区的时间,入设置USE_TZ = False, TIME_ZONE = 'Asia/Shanghai', 则使用上海的UTC时间。

    修改Django默认端口号

    Django默认端口号是8000,可以在启动runserver的时候,指定端口号,例如 python manage.py runserver 0.0.0.0:8001

    但这样每次启动都需要执行端口号的相关命令,理想的状态下,是可以将端口号配置在配置文件中,启动时,根据配置文件自动选择对应的端口号

    参考:https://stackoverflow.com/questions/23639085/django-change-default-runserver-port

    对项目根目录的manage.py进行修改,主要是注释下面的部分,同时也可以修改默认地址。

    #!/usr/bin/env python
    import os
    import sys
    from django.conf import settings
    
    if __name__ == "__main__":
        os.environ.setdefault("DJANGO_SETTINGS_MODULE", cmdline.settings)
        try:
            from django.core.management import execute_from_command_line
        except ImportError:
            # The above import may fail for some other reason. Ensure that the
            # issue is really that Django is missing to avoid masking other
            # exceptions on Python 2.
            try:
                import django
            except ImportError:
                raise ImportError(
                    "Couldn't import Django. Are you sure it's installed and "
                    "available on your PYTHONPATH environment variable? Did you "
                    "forget to activate a virtual environment?"
                )
            raise
        from django.core.management.commands.runserver import Command
        # 修改默认地址
        Command.default_addr = settings.HOST
        # 修改默认端口号
        Command.default_port = settings.PORT
        execute_from_command_line(sys.argv)
    

    QueryDict转dict

    Django中,request的POST和GET属性,都是QueryDict的实例,直接用dict(request.GET)进行转换(假设HttpRequest的实例为request),会发送value都为list的情况,即使value只是一个string,也会变成['张三'],正确的方法应该是request.GET.dict(),POST也是同样的方法。

    form_data = request.POST.dict()
    

    JsonResponse接受非dict对象

    默认情况下,JsonResponse要求接受一个dict对象,如果传入list等非dict对象,对引发TypeError。这个时候在JsonResponse的参数中增加safe为False(默认为True),使其处理非dict对象。

    return JsonResponse([], safe=False)
    

    强制Django渲染静态文件

    在Django的Debug模式关闭后,默认不会渲染静态文件。合理的做法应该是将静态文件部署到Nginx上,再Django中再进行配置。但是有些情况,比如项目规模极小,不希望引入Nginx,可以通过命令强制Django渲染静态文件。

    python manage.py runserver --insecure

  • 相关阅读:
    java中的锁
    如何解决ORA-12547: TNS:lost contact错
    MVC Json 回报
    热12应建议网站模板(免费下载点)
    python爬行动物集合360联想词搜索
    Cocos2d-x 3.1.1 学习日志8--2分钟让你知道cocos2d-x3.1.1 文本类别
    两个堆栈实现一个队列和一叠两个队列实现【算法导论课后题】
    Android获得Manifest在<meta-data>元件的值
    40地点40投资者接下来的几年
    【编程之美】java二进制实现重建
  • 原文地址:https://www.cnblogs.com/guapitomjoy/p/12045865.html
Copyright © 2020-2023  润新知