Django保姆级简易项目

图片及代码均为自我理解,勿喷!!!
从头到尾,建立一个简单的django项目,保姆级教程。
从头创建django项目的脑图,如下:
在这里插入图片描述

框架搭建

django版本(2.2):
使用python的pip安装

pip install django==2.2

创建一个django项目(mybbs):

django-admin startproject mybbs

一个django项目自成一个文件夹,如果在该项目再上面套一层目录,可能会出现路径问题

创建应用(bbs)

python manage.py startapp bbs

项目结构如下
在这里插入图片描述
数据库、时区、语言等设置(settings.py):
应用配置

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'bbs.apps.BbsConfig'          # 默认设置,使用默认数据库
   #  ‘bbs’                       # 使用mysql等数据库,可只写应用名
]

默认数据库设置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'bbs.sqlite3'),
    }
}

mysql配置

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '数据库名',
        'USER': '用户名',
        'PASSWORD': '用户密码',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}

templates配置

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',
            ],
        },
    },
]

时区、语言配置“

LANGUAGE_CODE = 'zh-hans'        # 语言

TIME_ZONE = 'Asia/Shanghai'      # 地区

USE_I18N = True

USE_L10N = False

USE_TZ = False

static创建

手动创建static文件,setting文件配置以下代码,一般情况static未能引用或报错,多半配置的路径不对

STATIC_URL = '/static/'
STATICFILES_DIRS = (                    # static的配置
    os.path.join(BASE_DIR, 'static'),
)

模型创建

django模型字段类型
在这里插入图片描述
model.py文件内容如下:

from django.db import models


class Topic(models.Model):
    title = models.CharField(verbose_name="标题", max_length=100, null=False)
    content = models.CharField(verbose_name="内容", max_length=200, null=False)
    like_num = models.DecimalField(verbose_name="评分", null=True, max_digits=6, decimal_places=2)     # 必须设置整个数字的长度, 小数点后面的有效位数
    c_time = models.DateTimeField(verbose_name="创建日期", auto_now_add=True)    # 模型创建,自动添加日期
    l_time = models.DateTimeField(verbose_name="修改日期", auto_now=True)    # 修改日期

    class Meta:
        verbose_name = "话题"
        verbose_name_plural = "话题"      # 后台样式


数据迁移

# 生成数据库迁移文件的命令
python manage.py makemigrations
生成迁移表的命令
# python manage.py migrate

创建后台超级用户

python manage.py createsuperuser

使用默认数据库,如果报错,需修改源码debug.py
在这里插入图片描述
在这里插入图片描述

后台管理

admn.py文件

from django.contrib import admin
from bbs.models import *


@admin.register(Topic)
class TopicAdmin(admin.ModelAdmin):
    list_display = ["title", "content", "like_num"]    # 显示列表
    fields = ("content", "title", "like_num")     # 编辑字段
    search_fields = ("title", )   # 一个数据,加一个,变为数组类型,不加逗号,默认为字符串

    def has_delete_permission(self, request, obj=None):    # 去掉删除功能
        return False

前台管理

配置模板(settings.py):

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',
            ],
        },
    },
]

视图(views.py)

from django.shortcuts import render
from django.views.generic import ListView
from bbs.models import *


# 类视图
class Index(ListView):
    model = Topic
    template_name = "index.html"
    context_object_name = "topic_list"   # 前后端交互的字段名

路由(urls.py)

from django.contrib import admin
from django.urls import path
from bbs import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.Index.as_view(), name='index')
]

前台网页

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<table border="1">
    <tr>
        <td>学号</td>
        <td>标题</td>
        <td>内容</td>
    </tr>
    {# 从视图传来的数据,遍历展示 #}
    {% for i in topic_list %}
        <tr>
            <td>{{ forloop.counter }}</td>
            <td>{{ i.title }}</td>
            <td>{{ i.content }}</td>
        </tr>
    {% endfor %}
</table>

</body>
</html>

运行代码

python manage.py runserver

在这里插入图片描述

网页结果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

野人秋桐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值