Django 5 学习笔记 2024版

news/2024/9/19 4:59:33 标签: django, 学习, 笔记

1. 官方中文文档

Django 文档 | Django 文档 | Django (djangoproject.com)

2. 第一个应用 博客

总目录

 

<1>依赖安装:

pip install django

<2> 创建 工程 myapp

django-admin startproject myapp
cd myapp

<3>创建 应用 app

> python manage.py startapp app 

<4> 配置模型生成数据库表 

配置数据库: myapp/settings.py

对应文件: app/models.py

python manage.py makemigrations 
python manage.py migrate

<5> 配置文件\路由\视图

<6> 配置 后台

主要文件: app/admin.py

生成管理员账号:

python manage.py createsuperuser

账号:admin

邮箱:admin@qq.com

密码:abc123

<7> 运行服务器

python manage.py runserver

python manage.py runserver 0.0.0.0:8080

<8> 美化 后台页面

 

pip install django-simpleui

myapp/setting.py 

INSTALLED_APPS = [
    'simpleui', # 注意这里
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    ...     
]

3. 文件参考例:

app/templates/app/post_list.html

<!DOCTYPE html>
<html>
<head>
    <title>Blog</title>
{% load static %}

   <link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}">
</head>
<body>
    <h1>博客</h1>
    {% for post in posts %}
        <div>
            <h2><a href="{% url 'post_detail' pk=post.pk %}">{{ post.title }}</a></h2>
            <p>{{ post.content|truncatewords:30 }}</p>
            <p>{{post.f_name}} 发布于 </p>
        </div>
    {% endfor %}

<img  class="bd-placeholder-img" width="200" height="250" src="{{ post.icon2.url }}" alt="" srcset="">
</body>
</html>

app/templates/app/post_detail.html

<!DOCTYPE html>
<html>
<head>
    <title>{{ post.title }}</title>
</head>
<body>
    <img src="{{ post.image.url}}" alt="" srcset="">
    <h1>{{ post.title }}</h1>
    <p>{{ post.content }}</p>
    <p>Published: {{ post.created_at }}</p>
</body>
</html>

app/admin.py

# from django.contrib import admin

# Register your models here.
from django.contrib import admin
from .models import Post, pru ,Netsite

@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
    list_display = ('title', 'author','other','created_at', 'updated_at', 'publish_date')


class PruAdmin(admin.ModelAdmin):
    list_display = ('title','p_name', 'P_jg','p_sl')
admin.site.register(pru, PruAdmin)

admin.site.site_header='BPC管理后台'
admin.site.site_title='BPC管理后台'
admin.site.index_title='BPC管理后台'

class NetAdmin(admin.ModelAdmin):
    list_display = ('title', 'content')

admin.site.register(Netsite, NetAdmin) 

 

app/models.py

# from django.db import models

# Create your models here.
from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=200 , verbose_name="标题" )
    author = models.CharField(max_length=100, verbose_name="作者", default="匿名") # 添加作者字段
    other = models.CharField(max_length=100, verbose_name="另外", default="other") # 添加作者字段
    content = models.TextField()
    # f_name = models.CharField("客户姓名", max_length=30)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    publish_date = models.DateField(null=True)
    icon = models.FileField(upload_to='blog\static\img', null=True)
    # icon2 = models.ImageField(upload_to='media/', null=True)
    icon2 = models.ImageField(default='bank.png', blank=True)

class pru(models.Model):
    title = models.CharField(max_length=200 , verbose_name="标题", default="标题")
    p_name = models.CharField(max_length=200 , verbose_name="名字")
    P_jg = models.CharField(max_length=100, verbose_name="价格", default="20") # 添加作者字段
    p_sl = models.CharField(max_length=100, verbose_name="数量", default="1") # 添加作者字段
    content = models.TextField()    

    def __str__(self):
        return self.title
    
class Netsite(models.Model):
    title = models.CharField(max_length=200 , verbose_name="标题", default="标题")
    content = models.TextField( verbose_name="内容", default="http://")

app/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.post_index, name='post_index'),
    path('', views.post_list, name='post_list'),
    path('post/<int:pk>/', views.post_detail, name='post_detail'),
]

app/views.py

# from django.shortcuts import render

# Create your views here.
from django.shortcuts import render
from .models import Post, pru , Netsite

def post_index(request):
    posts = Post.objects.all()
    Netsites = Netsite.objects.all()
    return render(request, 'app/index.html', {'posts': posts, 'Netsites': Netsites})

def post_list(request):
    posts = Post.objects.all()
    return render(request, 'app/post_list.html', {'posts': posts})

def pru_list(request):
    prus = pru.objects.all()
    return render(request, 'app/post_list.html', {'prus': prus})

def post_detail(request, pk):
    post = Post.objects.get(pk=pk)
    return render(request, 'app/post_detail.html', {'post': post})

myapp/settings.py

# Application definition

INSTALLED_APPS = [
    'simpleui', # 管理后台
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]


# Internationalization
# https://docs.djangoproject.com/en/5.1/topics/i18n/

LANGUAGE_CODE = 'zh-hans'  # 中文,简体
TIME_ZONE = 'Asia/Shanghai'  # 中国标准时间

# LANGUAGE_CODE = 'en-us'

# TIME_ZONE = 'UTC'

USE_I18N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/5.1/howto/static-files/

STATIC_URL = 'static/'
STATIC_DIR = [os.path.join(BASE_DIR, 'static')]

MEDIA_URL = 'media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

# Default primary key field type
# https://docs.djangoproject.com/en/5.1/ref/settings/#default-auto-field

DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

# 隐藏右侧SimpleUI广告链接和使用分析
SIMPLEUI_HOME_INFO = False 
SIMPLEUI_ANALYSIS = False 

myapp/urls.py

from django.contrib import admin
from django.urls import include, path
from django.conf import settings
from django.conf.urls.static import static


urlpatterns = [
    path('admin/', admin.site.urls),
    path('app/', include('app.urls')),
    path('', include('app.urls')),
] 

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)


http://www.niftyadmin.cn/n/5665026.html

相关文章

大数据新视界 --大数据大厂之Kubernetes与大数据:容器化部署的最佳实践

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

苹果macOS 15.0 Sequoia正式版发布:iPhone应用镜像玩、手机消息电脑知

9月17日苹果向 Mac 电脑用户推送了 macOS 15 更新&#xff08;内部版本号&#xff1a;24A335&#xff09;&#xff0c;除了引入数个 iOS 18 的新功能外&#xff0c;macOS 15 Sequoia 还带来了全新的 Continuity 功能 ——iPhone 镜像。 iPhone 镜像功能可以让用户直接在 Mac 上…

C#开发者的新选择:使用ImageSharp进行图像处理

在.NET生态系统中&#xff0c;ImageSharp是一个功能强大、跨平台的图像处理库&#xff0c;它为开发者提供了丰富的API来处理图像。与传统的System.Drawing不同&#xff0c;ImageSharp不需要依赖Windows GDI&#xff0c;因此可以在Linux和macOS等非Windows平台上运行。本文将介绍…

【机器学习】--- 自然语言推理(NLI)

引言 随着自然语言处理&#xff08;NLP&#xff09;的迅速发展&#xff0c;**自然语言推理&#xff08;Natural Language Inference, NLI&#xff09;**已成为一项重要的研究任务。它的目标是判断两个文本片段之间的逻辑关系。这一任务广泛应用于机器阅读理解、问答系统、对话…

centos远程桌面连接windows

CentOS是一款广泛使用的Linux发行版&#xff0c;特别是在服务器领域。很多企业和个人用户会选择远程连接到CentOS进行操作和维护。虽然CentOS自带了一些远程桌面解决方案&#xff0c;但它们在使用上存在一些局限性。接下来&#xff0c;我将介绍如何实现CentOS的远程桌面连接&am…

客户端/服务器的简易实现

目录 一,网络编程套接字 二,UDP/TCP的区别(​编辑) 三,UDP API使用 四,TCP API使用 一,网络编程套接字 socket socket(操作系统给应用程序的API,起了一个名字,就成为socket API) socket API提供了两套API分别为UDP和TCP: 二,UDP/TCP的区别() TCP有链接,可靠传输,面向字…

git push命令报错:the remote end hung up unexpectedly

Git Push报错信息如下 Total 3632 (delta 819), reused 3035 (delta 521) fatal: the remote end hung up unexpectedly 修复方式 找到项目下的隐藏文件夹.git&#xff08;注意前面是带着点的&#xff09;&#xff0c;修改里面的config这个文件&#xff0c;在最后加上以下内…

【数据可视化】Arcgis api4.x 热力图、时间动态热力图、timeSlider时间滑块控件应用 (超详细、附免费教学数据、收藏!)

1.效果 目录 1.效果 2.安装配置 3.热力图 4.TimeSlider滑块应用 4.1 时间滑块控件 4.2 添加控件 5.时间动态热力图 2.安装配置 这里不教大家如何在前端框架使用arcgis api。不过npm安装、css如何引入、教学数据存放与图层加载的教程&#xff0c;可以浏览我之前发的一篇文…