提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
初识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 }}
提示:以下是本篇文章正文内容,下面案例可供参考
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 项目名
python manage.py runserver 启动
python manage.py startapp appname 子应用创建
配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST':'localhost',
'PORT':3306,
'USER':'root',
'PASSWORD':'123456',
'NAME':'department',
}
}
五、本单元知识总结
1.理解什么是静态资源
2.熟练掌握静态资源的有关配置
3.掌握迁移的命令使用
4.掌握admin控制台的使用
Original: https://blog.csdn.net/ROM_Blessed/article/details/124369025
Author: ROM_Blessed
Title: 【无标题】
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/737360/
转载文章受原作者版权保护。转载请注明原作者出处!