天天看点

Django学习之路

Django搭建

目录
  • 目录
  • 一、安装Django
  • 二、创建Django工程
    • 1,使用django-adminy创建一个python web项目。
    • 2.创建子应用
    • 3.子应用目录说明
    • 4.启动Django 自带的webserver
  • 三、Django import / export实现数据库导入导出
  • 四、Django默认不支持https
  • 五、Django安装sslserver以支持https

一、安装Django

pip install Django==3.2.6 #方法一 先确保安装pip,再进行一下操作

sudo apt install python3-django #方法二
           

查看是否安装成功

>>> import django
>>> django.get_version()
           

二、创建Django工程

1,使用django-adminy创建一个python web项目。

例如我们创建的项目名称为mydodo_web,

创建自己的web项目的目录

2.创建子应用

python manage.py startapp 子应用名称   #manage.py是创建工程时自动生成的管理文件
           

3.子应用目录说明

  • admin.py 文件跟网站的后台管理站点配置相关。
  • apps.py 文件用于配置当前子应用的相关信息。
  • migrations 目录用于存放数据库迁移历史文件。
  • models.py 文件用户保存数据库模型类。
  • tests.py 文件用于开发测试用例,编写单元测试。
  • views.py 文件用于编写Web应用视图。

4.启动Django 自带的webserver

cd mydodo_web // 进入我们的工程目录下
python manage.py runserver //启动Django 自带的webserver
           

会提示 server已经成功启动了,在浏览器中访问http://127.0.0.1:8000应该就会看到显示有“It worded!”的Django的欢迎页面了。

三、Django import / export实现数据库导入导出

使用django-import-export库,导入导出数据,支持csv、xls、json、html等格式

官网:http://django-import-export.readthedocs.io/en/latest/installation.html

1、安装django-import-export

pip install django-import-export
           

2、配置settings.py

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    
    'import_export',
)
           

3.将所有STATICFILES_DIRS中的所有文件夹中的文件及各APP中static中的文件都复制到 静态文件根目录下:STATIC_ROOT

python manage.py collectstatic
           

4、models.py 建立model

class Medical(models.Model):
    # Field name made lowercase.
    item_no = models.AutoField(db_column='Item_no', primary_key=True)
    # Field name made lowercase.
    check_date = models.DateField(
        db_column='Check_date', blank=True, null=True)
    # Field name made lowercase.
    hospital = models.CharField(db_column='Hospital', max_length=32)
    # Field name made lowercase.
    item_cn = models.CharField(db_column='Item_cn', max_length=32)
    # Field name made lowercase.
    item_en = models.CharField(
        db_column='Item_en', max_length=32, blank=True, null=True)
    # Field name made lowercase.
    check_result = models.FloatField(
        db_column='Check_result', blank=True, null=True)
    # Field name made lowercase.
    unit = models.CharField(
        db_column='Unit', max_length=32, blank=True, null=True)
    # Field name made lowercase.
    reference = models.CharField(
        db_column='Reference', max_length=32, blank=True, null=True)
    # Field name made lowercase.
    normal = models.IntegerField(db_column='Normal', blank=True, null=True)

    
    class Meta:
        managed = False
        db_table = 'medical'
           

5、在admin.py 创建Resource、对应的Admin

注意:在admin.py里使用ImportExportModelAdmin,而不是ModelAdmin

class MedicalResource(resources.ModelResource):

    class Meta:
        model = models.Medical
        fields = ('check_date', "hospital", "item_cn", "item_en",
                  "check_result", "unit", "reference", "normal")
        export_order = ('check_date', "hospital", "item_cn",
                        "item_en", "check_result", "unit", "reference", "normal")

class MedicalAdmin(ImportExportModelAdmin):
    list_display = ('check_date', "hospital", "item_cn", "item_en", "check_result", "unit", "reference",
                    "normal")  # 重写属性list_display,来设置展示的表字段
    # 重写属性search_fields,把表字段name的值当做搜索条件
    search_fields = ('check_date', "hospital", "item_cn", "item_en", "normal")
    list_filter = ('check_date', "hospital", "item_cn", "item_en", "normal")

    date_hierarchy = 'check_date'
    resource_class = MedicalResource

           

四、Django默认不支持https

1)以python manage.py runserver启动应用,是不支持https的,报错如下错误:

You’re accessing the development server over HTTPS, but it only supports HTTP

2)settings.py中设置SECURE_SSL_REDIRECT = True此时,http请求自动跳转到https,http此时django能正确访问。如果直接请求HTTPS时会报错如下错误:

You’re accessing the development server over HTTPS, but it only supports HTTP.

五、Django安装sslserver以支持https

  1. 安装sslserver插件
pip install django-sslserver
           
  1. 在settings.py中添加配置
INSTALLED_APPS = (
    ...
    "sslserver",
    ...
)
           
  1. 自带证书启动django应用
python manage.py runsslserver
           
  1. 指定证书启动django应用
python manage.py runsslserver --certificate /path/to/certificate.crt --key /path/to/key.key 0.0.0.0:8000