django的简单学习
2024/1/18 18:02:29
本文主要是介绍django的简单学习,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言
以下项目实现基于一个投票系统
安装django
命令行安装
pip install django
pycharm安装
pycharm的setting里找到这个,点击+号,搜索django
点击Install Package
新建一个django项目
命令行创建项目(windows)
在pip安装完之后,在python的Scripts目录里有 django-admin.exe
:::tips
django-admin.exe startproject [项目名称]
:::
目录结构是这样
命令行创建项目(linux)
python3 -m django startproject my_django[项目名称] 或者 django-admin startproject my_django[项目名称]
目录结构是这样
pycharm创建项目
安装完django后,new project可以看到django
建好之后的django是这样的目录结构
pycharm创建的django项目多了一个templates目录
目录结构分析
- 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
目录结构如下
- admin.py
django默认提供的后台管理,不需要修改
- apps.py
一些关于创建的app的信息,不需要修改
- models.py
数据库模型文件
- views.py
视图文件,对web页面进行设计
- migrations
数据库迁移文件,数据的每一次变更,这里就会记录
- tests.py
测试文件
注册app
创建app后,要使用得先注册,找到settings.py,写入最后一行
这样就成功注册了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
数据库配置
默认数据库配置
django默认使用的是sqlite数据库,还是settings.py文件里看
如果想使用其它数据库,可以在这里进行修改
进行数据迁移应用
python3 manage.py migrate
对INSTALLED_APPS里注册的app进行一个迁移应用,每当注册了的app的数据发生迁移,都会进行一个记录
创建数据库模型
在这个投票应用中,需要创建两个模型:问题 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
,生成一个迁移
查看一下迁移所做的sql操作,python3 manage.py sqlmigrate app1 0001
,可以看到已经帮我们创建了表
最后执行python3 manage.py migrate
,应用一下所做的修改
这个 migrate 命令选中所有还没有执行过的迁移(Django 通过在数据库中创建一个特殊的表 django_migrations 来跟踪执行过哪些迁移)并应用在数据库上 - 也就是将你对模型的更改同步到数据库结构上。
API的使用
python3 manage.py shell
,对刚才创建的模型进行一个使用
对模型文件进行一下修改,让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
管理员账户使用
创建一个管理员用户
账号 admin:admin123
创建之后访问/admin,登录进入后台
向管理页面加入投票应用
编写app1/admin.py
from django.contrib import admin from .models import Question # Register your models here. admin.site.register(Question)
模板文件
模板文件的引用
在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))
模板语法的使用
上面是一种最简单的变量引用方法
循环语句
<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})
条件语句
<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})
这篇关于django的简单学习的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15SendGrid 的 Go 客户端库怎么实现同时向多个邮箱发送邮件?-icode9专业技术文章分享
- 2024-11-15SendGrid 的 Go 客户端库怎么设置header 和 标签tag 呢?-icode9专业技术文章分享
- 2024-11-12Cargo deny安装指路
- 2024-11-02MongoDB项目实战:从入门到初级应用
- 2024-11-01随时随地一键转录,Google Cloud 新模型 Chirp 2 让语音识别更上一层楼
- 2024-10-25Google Cloud动手实验详解:如何在Cloud Run上开发无服务器应用
- 2024-10-24AI ?先驱齐聚 BAAI 2024,发布大规模语言、多模态、具身、生物计算以及 FlagOpen 2.0 等 AI 模型创新成果。
- 2024-10-20goland工具下,如修改一个项目的标准库SDK的版本-icode9专业技术文章分享
- 2024-10-17Go学习:初学者的简单教程
- 2024-10-17Go学习:新手入门完全指南