• Django开发系列一基本框架生成


    参考
    杜赛: https://www.dusaiphoto.com/article/2/
    官方文档: https://docs.djangoproject.com/en/3.2/

    开发环境

    # 基本
    python 3.7
    pip install django==2.2.3
    
    # 扩展
    pip install django-crispy-forms # 渲染表单使用
    pip install mysqlclient==1.4.6 # mysql 数据库使用
    
    

    一、 项目创建基本语句

    # 创建名为 my_blog的django项目
    django-admin startproject my_blog
    # 运行django服务器
    python manage.py runserver 127.0.0.1:8000
    # 创建app,名为article
    python manage.py startapp article
    # 之后需要在settings中注册此app
    
    # 创建管理员账号 Superuser
    python manage.py createsuperuser
    

    打开chrome浏览器,输入http://127.0.0.1:8000/ ,即可看到运行的django

    二、 Model层相关

    在有了网站之后,第一个需要学习的是 数据层的使用,需要在数据库中建立数据表,具体建立方法参考官方文档

    # 两条数据库更新的基本指令
    python manage.py makemigrations
    python manage.py migrate
    

    三、 View层相关

    需要在每个app中新建 urls.pyforms.py,用于路由管理与表单构建。

    有了用户数据之后,网站需要先登录,此时涉及到url配置,此配置在urls.py中。
    在与settings.py同级的urls.py中配置到各个app的路由,在各个app中配置具体功能的路由。

    主urls

    from django.contrib import admin # admin的网址需要
    from django.urls import path, include
    urlpatterns = [
        path('admin/', admin.site.urls), # 使用admin自带的所有网址
        path('phone/', include("phone.urls", namespace='phone')), # phone是app的名字
        path('account_django/', include("account_django.urls", namespace='account_django')),
    ]
    

    二级urls

    以account_django为例

    from django.urls import path, reverse_lazy
    from . import views
    from django.contrib.auth import views as auth_views
    
    app_name = 'account_django'
    
    urlpatterns = [
        path('login/', views.user_login, name='login'),
        path('logout/', views.user_logout, name='logout'),
        path('home/', views.home, name='home'),
        path('about_system/', views.about_system, name='about_system'),
        path('users_table/', views.UsersTable.as_view(), name='users_table'),
        path('ajax_delete_user', views.ajax_delete_user, name='ajax_delete_user'),
        path('user_register/', views.user_register, name='user_register'),
        path('user_update/', views.user_update, name='user_update'),
        path('list_dep', views.list_dep, name='list_dep'),
        path('list_test_modules', views.list_test_modules, name='list_test_modules'),
        path('password_change/', auth_views.PasswordChangeView.as_view(
            success_url=reverse_lazy('account_django:password_change_done')
        ), name='password_change'),
        path('password_change_done/', auth_views.PasswordChangeDoneView.as_view(), name='password_change_done'),
    
    ]
    

    表单

    在用户登录时,输入用户名与密码的框即为表单。
    例,登录的form类

    # 引入表单类
    from django import forms
    class LoginForm(forms.Form):
        username = forms.CharField(required=True, label="邮箱前缀", widget=forms.TextInput(attrs={'class': 'form-control'}))
        password = forms.CharField(required=True, label="密码", widget=forms.PasswordInput(attrs={'class': 'form-control'}))
    

    四、 内置后台管理工具

    # 生成指令
    python manage.py createsuperuser
    # 访问
    http://127.0.0.1:8000/admin/
    

    五、 seetings设置

    
    # 1、自定义模块 与 静态文件 位置
    TEMPLATES = [
        {
            ... ...
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [os.path.join(BASE_DIR, 'templates')], # 此是需要手动修改的,其余的是默认生成的
            'APP_DIRS': True,
            ... ...
    	},
    ]
    
    
    # 2、设置数据库为使用的mysql
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'library',
            'USER': 'root',
            'PASSWORD': 'password',
            'HOST': '10.18.99.166',
            'PORT': '3306',
        }
    }
    
    # 3、设置语言与时区为 中文
    LANGUAGE_CODE = 'zh-hans'
    TIME_ZONE = 'Asia/Shanghai'
    
    # 4、设置静态文件放置处
    STATIC_URL = '/static/' # 此为默认生成的
    STATICFILES_DIRS = (os.path.join(BASE_DIR,'static'),) # 静态文件目录,为包含一个元素的元组; 此句放于 STATIC_URL='/static' 语句后
    
    # 5、若是重写的User继承了django自带的User,则添加下句
    AUTH_USER_MODEL = 'account.User'  # 让django自带的User类不起作用
    
    
  • 相关阅读:
    POJ 2017 No Brainer(超级水题)
    POJ 2017 No Brainer(超级水题)
    Poj1207 The 3n + 1 problem(水题(数据)+陷阱)
    Poj1207 The 3n + 1 problem(水题(数据)+陷阱)
    Poj1159 Palindrome(动态规划DP求最大公共子序列LCS)
    Poj1159 Palindrome(动态规划DP求最大公共子序列LCS)
    Poj1050_To the Max(二维数组最大字段和)
    Poj1050_To the Max(二维数组最大字段和)
    Poj 2602 Superlong sums(大数相加)
    Poj 2602 Superlong sums(大数相加)
  • 原文地址:https://www.cnblogs.com/qev211/p/16544056.html
Copyright © 2020-2023  润新知