• django项目设置


    1 项目下的文件

    用于项目设定的setting.py

    用于url规则匹配的urls.py

    用于创建socket对象的wsgi.py

    2 urls

    django2.0相比1.x,在url匹配语法上有很大变化,所以1.x的语法在2.0中是不适用的。

    分两步,导入app.views,创建规则,指向views先的一个函数

    from django.contrib import admin
    from django.urls import path
    from blog import blog_views
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('blog/', blog_views.blog_index),
    ]
    #admin是默认存在的管理函数
    #blog app导入它自己的views,然后设定,当url为'blog/'时,把request发送给blog_views下的blog_index方法。

    3 setting

    ALLOWED_HOSTS = ['*']
    #允许访问的ip,默认为空,可以改成任意
    

      

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'cmdb',
    ]
    #django开头的app是系统默认添加
    #我要创建一个app,就要把app写到这里
    

      

    MIDDLEWARE = [
        'django.middleware.csrf.CsrfViewMiddleware',
    ]
    #csrf防攻击,启用这个功能,在get请求时,会在响应头收到一个csrftoken。
    #在form post表单提交时,加入{% csrf_token %}参数,post过来的请求,会加一个csrftoken的隐藏input标签
    #django收到自己发出去的csrftoken,就证明这个请求是从自己的页面上提交的。是安全的
    

      

    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [os.path.join(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',
                ],
            },
        },
    ]
    #DIRS默认为空,这样,django会在app下的templates下搜索模板,
    #这里改为项目家目录的templates目录
    

     

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'mysite',
            'USER': 'root',
            'PASSWORD': 'xxxx',
            'HOST': '127.0.0.1',
            'PORT': '3306',
        }
    }
    #数据库配置,默认为sqlite3,这里已经改成mysql
    #设定库名,用户,密码,主机和端口
    

     

    # Internationalization
    # https://docs.djangoproject.com/en/2.0/topics/i18n/
    
    LANGUAGE_CODE = 'zh-hans'
    
    TIME_ZONE = 'Asia/Shanghai'
    
    USE_I18N = True
    
    USE_L10N = True
    
    USE_TZ = False
    #设置国际化选项,语言编码改成中文,时区改成上海,USE_TZ = False

      

    # Static files (CSS, JavaScript, Images)
    # https://docs.djangoproject.com/en/2.0/howto/static-files/
    
    STATIC_URL = '/static/'
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, "static"),
        '/static/',
    ]
    #静态文件目录设置,django默认不会创建static文件夹,也没有这里的配置,需要自己加上去。
    #当请求/static/时,搜索目录为项目家目录的static目录

    按照这样设定好templates和static时,目录结构如下

    在views中的模板地址如下

    def blog_index(request):
        blog_list = BlogPost.objects.all()
        print(blog_list)
        return render(request,'blog/index.html', {'blog_list':blog_list})
    

      

    在模板中引用静态文件如下

    <link href="/static/blog/starter-template.css" rel="stylesheet">
    

    4 init

    import pymysql
    
    pymysql.install_as_MySQLdb()
    #django2.0默认支持mysqldb,但python3不支持,要使用pymysql,需要在这里设置一下
    

      

     

     

  • 相关阅读:
    转自一位前辈的杂谈
    在vim编辑器中实现python的tab补全
    Go语言 异常panic和恢复recover用法
    go语言的cron包的简单使用
    go语言的指针
    Python 报 OpenSSL.SSL.SysCallError: (10054, 'WSAECONNRESET')
    python 之图像处理
    git 线上连接及版本控制
    vue依赖pycharm启动
    模拟django 后台管理
  • 原文地址:https://www.cnblogs.com/jabbok/p/9512566.html
Copyright © 2020-2023  润新知