• Python 创建一个Django项目


    1 环境搭建及创建

    1) 安装Django

    方法一:pip install django

    方法二:Pycharm File——settings——Project——Python Interpreter——Python3.9 添加Django安装,设置django的环境变量

    3)创建Django项目

    命令行至指定目录下,django-admin startproject djangotest

    4)启动django 项目

    python manage.py runserver

    5)创建一个App

    django-admin startapp webtest

    6)关闭django

    ctrl+C

     2 数据库连接

    1)定义模型:在app中的 models.py 中创建class(一个class对应一张表);

    from django.db import models
    
     
    
    # Create your models here.
    
    class Topic(models.Model):
    
        """用户学习的主题"""
    
        text=models.CharField(max_length=200) #指明字符数据类型,长度200
    
        date_added=models.DateTimeField(auto_now_add=True) # 创建新主题时,自动创建当前时间
    
     
    
        def __str__(self):
    
            return  self.text
    
     
    
    class Entry(models.Model):
    
        """学到的有关某个主题的具体知识"""
    
        topic=models.ForeignKey(Topic,on_delete=models.CASCADE) # 外键 级联删除,即删除Topic时删除Entry
    
        text=models.TextField()
    
        date_added=models.DateTimeField(auto_now_add=True)
    
     
    
        class Meta:
    
            verbose_name_plural='entries'
    
     
    
        def __str__(self):
    
            return f"{self.text[:50]}..."

    2)激活模型:在project下得seetings.py 中的INSTALLED_APPS 中添加app名称 (要将自己app名称放在默认前,这样能覆盖默认应用程序行为)

    3)连接自带sqlite数据库

    • 命令行cd 至包含manage.py路径下【每次修改数据后 都需要执行下面两步迁移模型】
    • 生成数据库迁移文件:python manage.py makemigrations appname
    • 迁移修改数据库:python manage.py migrate
    • 使用Django的模型管理网站 维护数据
      •  创建超级用户
    python manage.py createsuperuser
    • 向管理网站注册模型 app路径下 admin.py
    # Register your models here.
    
    from .models import Topic #Topic为models中创建的class名
    
    admin.site.register(Topic) #让Django通过管理网站管理模型
    
    admin.site.register(Entry)
    • 管理网站管理 维护用户、用户组以及model

    启动网站,访问/admin/

    • 命令行维护数据库
      • python manage.py shell
    from appname.models import classname
    
    classname.objects.all()    #查询该表所有实例
    • 遍历
    topics=Topic.objects.all()
    
    for  topic in topics:
    
    print(topic.id,topic)
    • 查询
    t=Topic.objects.get(id=1)
    
    t.text
    • 退出
    exit()

    3 配置路由和页面

     1) 映射URL

    • 在project路径urls.py引入from django.urls import path,include,然后再urlpatterns中添加:

    path('',include('webtest.urls'))

    • 在app路径下创建urls.py 添加以下代码
    """定义webtest的URL模式"""
    
    from django.urls import path
    
    from . import views
    
     
    
    # app_name='webtest' # 区别其他app同名文件,这里有一个问题就是在users中必须存在,在webtest中必须注释掉
    
    urlpatterns=[
    
        # 主页
    
        path('',views.index,name='index') #第一参数 路由;第二个参数 views.py中对应函数;第三个参数 指定名称
    
    ]

    2)搭建view(也就是MVC中的controller)

    from django.shortcuts import render # 根据视图提供的数据渲染响应
    
     
    
    # Create your views here.
    
    def index(request): # 网站请求查找路由到index,然后将request传递给函数
    
        """"学习笔记主页"""
    
        return render(request,''index.html')

    3)在app路径下创建templates创建index.html

    4 Django响应的前后端交互

      • 就是通过{%  %}代码块展示后端数据,具体看 djangotest 项目代码
      • Django中的前后端交互式后台强制解析,然后主要就是登录检测,django.contrib.auth.urls需要在users的urls.py views.py(@ =login_required) 以及在settings.py设置被登录拦截找首页(LOGIN_URL='users:login') # users:login是url配置的路由路径

    5 设置应用程序样式

      • 安装django-bootstrap4

    pip install django-bootstrap4

    • 项目引用

    settings.py 的INSTALLED_APPS 中 添加 'bootstrap4',

    • 在html中直接加class,在head中加入
    {% load bootstrap4 %}
    
    {% bootstrap_css %}
    
     {% bootstrap_javascript jquery='full' %}
    • 表单页 代码如下
    {% block content %}
    
        {% if form.errors %}
    
          <p>Your username and password didn't match.Please try again.</p>
    
        {% endif %}
    
     
    
        {% block page_header %}
    
        <h2>Log in to your account.</h2>
    
        {% endblock page_header %}
    
     
    
        <form method="post" action="{% url 'users:login' %}" class="form">
    
            {% csrf_token %}
    
            {% bootstrap_form form %}
    
            {% buttons %}
    
                <button name="submit" class="btn btn-primary">Log in</button>
    
            {% endbuttons %}
    
     
    
            <input type="hidden" name="next" value="{% url 'index' %}" />
    
        </form>
    
      {% endblock content %}
    • 不加样式表单页 代码如下
      {% block content %}
    
        <p><a href="{% url 'index' %}">index</a></p>
    
        <p>Add a new topic:</p>
    
        <form action="{% url 'new_topic' %}" method="post">
    
          {% csrf_token %}
    
          {{ form.as_p }}
    
          <button name="submit">Add topic</button>
    
        </form>
    
     
    
      {% endblock content %}

    6 Django+Mysql+Vue

      • 看到网上那么多教程,我相信Django+Mysql+Vue的过程应该不是那么难了吧
  • 相关阅读:
    MySQL 快速删除大量数据(千万级别)的几种实践方案——附源码
    Elasticsearch 通过Scroll遍历索引,构造pandas dataframe 【Python多进程实现】
    MySQL LOAD DATA INFILE—从文件(csv、txt)批量导入数据
    【Java】 NullPointerException、ArrayIndexOutOfBoundsException、ClassCastException、ArrayIndexOutOfBoundsException、ArrayStoreException、ArithmeticException等没有异常堆栈信息
    技术人“结构化思维”训练的一点想法和实践
    gitlab内存消耗大,频繁出现502错误的解决办法
    Tesseract-OCR 4.1.0 安装和使用— windows及CentOS
    Tika结合Tesseract-OCR 实现光学汉字识别(简体、宋体的识别率百分之百)—附Java源码、测试数据和训练集下载地址
    记一次Elasticsearch OOM(内存溢出)的优化过程—基于segments force merge 和 store type 转为 hybridfs
    ElasticSearch如何一次查询出全部数据——基于Scroll
  • 原文地址:https://www.cnblogs.com/weimingai/p/15054841.html
Copyright © 2020-2023  润新知