首页 > 其他分享 >django的简单学习

django的简单学习

时间:2024-01-18 15:58:18浏览次数:26  
标签:models 创建 py django 学习 admin 简单 import

前言

以下项目实现基于一个投票系统

安装django

命令行安装

pip install django

pycharm安装

pycharm的setting里找到这个,点击+号,搜索django
image
点击Install Package
image

新建一个django项目

命令行创建项目(windows)

在pip安装完之后,在python的Scripts目录里有 django-admin.exe
image
:::tips
django-admin.exe startproject [项目名称]
:::
image
目录结构是这样
image

命令行创建项目(linux)

python3 -m django startproject my_django[项目名称] 或者 django-admin startproject my_django[项目名称]
目录结构是这样
image

pycharm创建项目

安装完django后,new project可以看到django
image

建好之后的django是这样的目录结构
image

pycharm创建的django项目多了一个templates目录

目录结构分析

image

  • manage.py

一个类似于django-admin.exe的管理脚本,可以对你建立的django项目进行管理,每次新建一个django项目都会生成这个文件

  • init.py

一个空文件,标识这个文件夹是一个包

  • asgi.py

作为你的项目的运行在 ASGI 兼容的 Web 服务器上的入口,处理网络请求的文件

  • wsgi.py

作为你的项目的运行在 WSGI 兼容的Web服务器上的入口,也是处理网络请求的文件

  • settings.py

django项目的配置文件

  • urls.py

Django 项目的 URL 声明,就像你网站的“目录”,其实就是常说的路由配置

  • templates

模板文件放置的文件夹,html等等文件

启动web服务

python3 manage.py runserver

创建应用app

一个项目可以有很多应用,一个应用也可以被很多项目使用,应用app相当于一个功能模块
python3 manage.py startapp app1
目录结构如下
image

  • admin.py

django默认提供的后台管理,不需要修改

  • apps.py

一些关于创建的app的信息,不需要修改

  • models.py

数据库模型文件

  • views.py

视图文件,对web页面进行设计

  • migrations

数据库迁移文件,数据的每一次变更,这里就会记录

  • tests.py

测试文件

注册app

创建app后,要使用得先注册,找到settings.py,写入最后一行
image
这样就成功注册了app1这个应用,开始对app1进行开发

对app进行开发

先编写视图文件views.py

from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.
def index(request):
    return HttpResponse("Hello World!")

一个经典的Hello world,这里是对http请求进行了处理,response返回一个Hello World!
在app1/ ,创建一个urls.py,默认是没有这个文件的,编写代码,把之前views编写的index函数给包含进去

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name="index")
]

在my_django/urls.py继续编写,包含app1.urls

from django.contrib import admin
from django.urls import path, include

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

启动web服务
python3 manage.py runserver,访问app1
image

数据库配置

默认数据库配置

django默认使用的是sqlite数据库,还是settings.py文件里看
image
如果想使用其它数据库,可以在这里进行修改

进行数据迁移应用

python3 manage.py migrate 对INSTALLED_APPS里注册的app进行一个迁移应用,每当注册了的app的数据发生迁移,都会进行一个记录
image

创建数据库模型

在这个投票应用中,需要创建两个模型:问题 Question 和选项 Choice。Question 模型包括问题描述和发布时间。Choice 模型有两个字段,选项描述和当前得票数。每个选项属于一个问题
编写app1/models.py

from django.db import models

# Create your models here.
class Question(models.Model):
    question_text = models.CharField(max_length=200) # 创建一个字符串字段
    pub_date = models.DateTimeField("date published") # 创建一个date字段
    
class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE) # 标识为外键
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0) # 创建一个数字型字段,默认值设为0

激活模型

python3 manage.py makemigrations app1,生成一个迁移
image

查看一下迁移所做的sql操作,python3 manage.py sqlmigrate app1 0001,可以看到已经帮我们创建了表
image
最后执行python3 manage.py migrate,应用一下所做的修改
这个 migrate 命令选中所有还没有执行过的迁移(Django 通过在数据库中创建一个特殊的表 django_migrations 来跟踪执行过哪些迁移)并应用在数据库上 - 也就是将你对模型的更改同步到数据库结构上。
image

API的使用

python3 manage.py shell,对刚才创建的模型进行一个使用
image
对模型文件进行一下修改,让Question.objects.all()所展示的信息更为直观

from django.db import models

# Create your models here.
class Question(models.Model):
    def __str__(self):
        return self.question_text
    question_text = models.CharField(max_length=200) # 创建一个字符串字段
    pub_date = models.DateTimeField("date published") # 创建一个date字段
    
class Choice(models.Model):
    def __str__(self):
        return self.choice_text
    question = models.ForeignKey(Question, on_delete=models.CASCADE) # 标识为外键
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0) # 创建一个数字型字段,默认值设为0

image

管理员账户使用

创建一个管理员用户

image
账号 admin:admin123
创建之后访问/admin,登录进入后台
image

向管理页面加入投票应用

编写app1/admin.py

from django.contrib import admin
from .models import Question
# Register your models here.
admin.site.register(Question)

image

模板文件

模板文件的引用

在app1下创建一个templates文件夹,在该文件夹下继续创建一个index.html文件

{{question_text}}

编写views.py

from django.shortcuts import render
from django.http import HttpResponse
from django.template import loader

# Create your views here.
def index(request):
    template = loader.get_template("index.html")
    context = {
        "question_text": "123456"
    }
    return HttpResponse(template.render(context, request))

image

模板语法的使用

上面是一种最简单的变量引用方法

循环语句

<h1>
{% for i in n %}
<h2>{{i}}</h2>
{% endfor %}
</h1>
from django.shortcuts import render 
from django.http import HttpResponse
from django.template import loader

# Create your views here.
def index(request):
    n = ['f12', 'f13', 'f14']
    return render(request, 'index.html', {'n': n})

image

条件语句

<h1>
    {% if i == "f12" %}
        <h2>f12 is handsome</h2>
    {% else %}
        <h2>f12 is very handsome</h2>
    {% endif %}
</h1>
from django.shortcuts import render
from django.http import HttpResponse
from django.template import loader

# Create your views here.
def index(request):
    i = 'f12'
    return render(request, 'index.html', {'i': i})

image

标签:models,创建,py,django,学习,admin,简单,import
From: https://www.cnblogs.com/F12-blog/p/17972624

相关文章

  • linux下iptables学习
    iptables的结构iptables由上而下,由tables、chains、rules组成四表iptables有filter、nat、mangle、raw四种内置表Filter表filter是iptables的默认表,有一下三种内建链:INPUT链-处理来自外部的数据OUTPUT链-处理向外发送的数据FORWARD链-将数据转发到本机的其他网......
  • 抓包Tcpdump 学习与理解
    常用参数:-w文件名,可以把报文保存到文件;-c数量,可以抓取固定数量的报文,这在流量较高时,可以避免一不小心抓取过多报文;-s长度,可以只抓取每个报文的一定长度,后面我会介绍相关的使用场景;-n,不做地址转换(比如IP地址转换为主机名,port80转换为http);-v/-vv/-vvv,可以打印更加详细......
  • 1.17学习进度
    资源管理层面:1.集群资源管理者(master):ResourceManager2.单机资源管理者(worker):NodeManager任务计算层面:单任务管理者(master):ApplicationMaster单任务执行者(worker):Task(容器内计算款家的角色)spark运行角色资源层面:1.master角色:集群资源管理2.worker角色:单机资源管理任务运行层面:1.drive......
  • 1.18学习进度
    1.local模式基本原理   本质:启动一个JVMProcess进程(一个进程里面有多个线程),执行任务task   local模式可以限制模拟spark集群环境的线程数量,即local[N]或local[*]       其中N代表可以使用N个线程,如果不指定N,默认是1个线程       如果是local[*],则代表R......
  • Zoho 的POP、IMAP 和SMTP 设置教程,简单好用
    随着云计算技术的不断发展,越来越多的企业和个人选择使用云端服务来管理和存储电子邮件。Zoho作为一家领先的云服务提供商,其邮件服务备受青睐。本文将介绍如何使用Zoho的POP、IMAP和SMTP设置,并展示其简单而高效的操作方式。1.ZohoSMTP简介ZohoSMTP,即简单邮件传输协议,是一种用于在......
  • mail邮件的POP、IMAP和SMTP设置教程,简单好用
    在现代社会中,电子邮件已经成为人们日常沟通的重要方式之一。为了能够顺利收发邮件,正确设置邮件客户端的POP、IMAP和SMTP是至关重要的步骤。本文将为大家详细介绍如何进行这些设置,使邮件体验更为简单和便捷。1.POP、IMAP、SMTP是什么?在深入了解如何设置之前,我们先来了解一下这三个......
  • C# Task 异步的一些流程简单测试 Task 测试 异步测试
    测试程序:publicclassTAKS_TEST{privatereadonlyDictionary<int,Task<T_TEST>>DataDic=newDictionary<int,Task<T_TEST>>();privateT_TESTGetRes(inti){Thread.Sleep(i*1000);returnnewT_TEST(){......
  • Go语言学习笔记 - 不定时更新
    Go语言常用命令环境准备#修改go配置exportGOPROXY="https://goproxy.cn"GoMod(注:比较常用的是init,tidy,edit)gomodinitnamecreatemodules(创建包名注:包名在import引入自定义包时替代GOPATH)gomoddownloaddownloadmodulestolocalcache(下载依赖......
  • 贪心算法-题目1力扣455(简单题)
    力扣455,给小朋友发饼干假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j]>=g[i],我们可以将这个饼干 j 分配......
  • 【Django】通用分块上传
    通用分块上传文件importos#通用路径分块上传defpiecemeal_public_load(path,original_md5_hash,chunk_index,upload_file,chunk_total,file_Name):"""path:存放路径(media/后面跟的路径)original_md5_hash:临时文件夹名称chunk_inde......