【无标题】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

初识Django下

前言

提示:这里可以添加本文要记录的大概内容:

1.了解HTTP协议与动态、静态网站的理念
2.独立进行框架项目的创建部署
3.熟悉整个项目框架的目录结构
模版配置

首先要告诉Django,你准备把接下来的html页面存放在哪里,那么需要打开settings.py文件,找到TEMPLATES选项,修改其中的DIRS属性,在这里添加我们的html文件夹位置


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',
            ],
        },
    },
]
创建模版

有了这个文件夹的配置之后,接下来在项目根目录下创建与配置同名的文件夹 template/

并在其中书写一个简单的 html,并命名为 index.html

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>hititle>
head>
<body>
<h1>真不错h1>
<p>
    今天这个天气是<strong>晴天strong>
p>
body>
html>
视图渲染

有了 html,目录也配置好了,那么紧接着就是让视图去返回这个文件,那么现在我们要引入一个新的方法叫做 render,这个方法专门用来返回一个 _html_页面,并且在未来,我们还会了解到这个方法的更高级用处,就是传递上下文 模版变量

修改app下的视图方法,返回这个页面,页面路径不需要绝对路径,使用template/下的相对路径即可


from django.shortcuts import render

def index(request):
    return render(request, 'index.html')

2.1.2 模版变量渲染

{{ var }}

&#x63D0;&#x793A;&#xFF1A;&#x4EE5;&#x4E0B;&#x662F;&#x672C;&#x7BC7;&#x6587;&#x7AE0;&#x6B63;&#x6587;&#x5185;&#x5BB9;&#xFF0C;&#x4E0B;&#x9762;&#x6848;&#x4F8B;&#x53EF;&#x4F9B;&#x53C2;&#x8003;

2.1.3 模版语句循环、分支

for 标签
{% for var in sequence %}
    {{ var }}
{% endfor %}
if 标签

在模版中,可以通过 {% if %}标签语法来进行模板变量的值判断;

{% if test_list %}
    列表不为空
{% elif test_dict %}
    列表为空,字典不为空
{% else %}
    列表字典均为空
{% endif %}

2.2.2 静态资源路径配置

  • 在 _settings_中配置 静态文件目录路径, 添加如下内容
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

在项目中创建static/目录,static/ _*目录下创建专门保存图片的_img/***目录,在里面存一张图片

project/
    project/
    app/
    template/
    static/
          img/
             1.jpg

有了图片,接下来在模板页面中去引入并使用它,打开 index.html进行修改

DOCTYPE html>
<html lang="en">
    {% load staticfiles %}
<head>
    <meta charset="UTF-8">
    <title>hititle>
head>
<body>
    <h1>{{ message }}h1>
    <img src='{% static "img/1.jpg" %}' alt="图片">
body>
html>

2.3 ORM映射

通过 ORM映射在 _models.py_文件中创建模型类


from django.db import models

class Weather(models.Model):
    weather = models.CharField(max_length=100,verbose_name="天气")
    class Meta:
        verbose_name_plural = "天气"

    def __str__(self):
        return self.weather

在这里我们使用到了 django 的 ORM映射关系用来创建数据库表,继承自 _models.Model_类,
一个类用来表示一张表,类中的一个属性代表一个字段

代码中定义了一个类型为 CharField,长度为 100的字段,用来存储天气

models.CharField(max_length=100,verbose_name="天气")
  • 当某个子应用 APP涉及到了数据库的使用时,要记得在 settings文件中进行配置

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp',
]

2.3.3 生成迁移文件

python manage.py makemigrations

2.3.4 执行迁移

python manage.py migrate

2.4.2 admin控制台超级用户

  • 创建 admin_超级用户,使用 manage.py_命令行工具执行如下命令并按照提示创建即可
python manage.py createsuperuser

执行完之后需要在跟目录下 安装

import pymysql
pymysql.install_as_MySQLdb()

  • app下的 _admin.py_文件中进行模型类的注册

from django.contrib import admin
from myapp import models
admin.site.register(models.Weather)

如果运行 到之前的项目
要先 关闭自己之前的项目 才可以 不用重新迁移
如果出现

 django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.

就是没有在跟目录下安装

2.5 ORM视图操作

2.5.1 子应用视图使用ORM

2.5.2 如何通过ORM操作模型类

这里使用 all方法,代表获取某表中的所有数据


from django.shortcuts import render
from myapp import models

def index(request):
    weathers = models.Weather.objects.all()
    content = {
        "weathers": weathers,
    }
    return render(request, 'index.html', content)

错误

每次写的单词都会有错别字 要认真 写
还有 经常会少写一个点啊什么的
还要多练 首先要把

错误

【无标题】
解决方法:
在输入的 方法中少了 .\
让马家伟帮我看出来的

错误

【无标题】
是我在该文件夹中 多创建了一个子应用
导致我在使用 注册的过程中 把一半的功能用错 导致了错误的发生

解决办法 :
注册使用统一一个子应用 删除其中一个 把子应用统一
是老师让我打开共屏 帮我解决了


django-admin startproject pro &#x9879;&#x76EE;&#x540D;
python manage.py runserver   &#x542F;&#x52A8;
python manage.py startapp appname   &#x5B50;&#x5E94;&#x7528;&#x521B;&#x5EFA;
&#x914D;&#x7F6E;
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST':'localhost',
        'PORT':3306,
        'USER':'root',
        'PASSWORD':'123456',
        'NAME':'department',
    }
}

五、本单元知识总结

1.&#x7406;&#x89E3;&#x4EC0;&#x4E48;&#x662F;&#x9759;&#x6001;&#x8D44;&#x6E90;
2.&#x719F;&#x7EC3;&#x638C;&#x63E1;&#x9759;&#x6001;&#x8D44;&#x6E90;&#x7684;&#x6709;&#x5173;&#x914D;&#x7F6E;
3.&#x638C;&#x63E1;&#x8FC1;&#x79FB;&#x7684;&#x547D;&#x4EE4;&#x4F7F;&#x7528;
4.&#x638C;&#x63E1;admin&#x63A7;&#x5236;&#x53F0;&#x7684;&#x4F7F;&#x7528;

Original: https://blog.csdn.net/ROM_Blessed/article/details/124369025
Author: ROM_Blessed
Title: 【无标题】

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/737360/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球