前言

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

安装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的简单学习的更多相关文章

  1. django form使用学习记录

    Django forms使用容易, 又方便扩展, 因此Django admin和CBVs基本都基于forms使用. 事实上, 由于django forms的强大验证功能, 大多数Django API ...

  2. 沉淀,再出发:Django的简单使用

    沉淀,再出发:Django的简单使用 一.前言     在学习了python的基础语法之后,其实大家都很怀疑python的使用场景,其实python在很多场合都有很强的适应性,就比如说web开发之中使 ...

  3. Django 2.0 学习(07):Django 视图(进阶-续)

    接Django 2.0 学习(06):Django 视图(进阶),我们将聚焦在使用简单的表单进行处理和精简代码. 编写简单表单 我们将用下面的代码,来替换之前的detail模板("polls ...

  4. 基于Django进行简单的微信开发

    代码地址如下:http://www.demodashi.com/demo/11756.html 一.微信公众号的准备: 1. 注册 访问地址:https://mp.weixin.qq.com/ 按照提 ...

  5. django入门 -- 简单流程

    django入门 -- 简单流程 简介 通过简单示例,使用django完成基本流程的开发,学习django的主要的知识点,在后续课程中会逐个知识点进行深入讲解 以“图书-英雄”管理为示例 主要知识点介 ...

  6. Log4j简单学习笔记

    log4j结构图: 结构图展现出了log4j的主结构.logger:表示记录器,即数据来源:appender:输出源,即输出方式(如:控制台.文件...)layout:输出布局 Logger机滤器:常 ...

  7. Django - Django框架 简单介绍

    Django框架 简单介绍 本文地址: http://blog.csdn.net/caroline_wendy/article/details/29172271 1. 介绍 Django是一个开放源码 ...

  8. Python django实现简单的邮件系统发送邮件功能

    Python django实现简单的邮件系统发送邮件功能 本文实例讲述了Python django实现简单的邮件系统发送邮件功能. django邮件系统 Django发送邮件官方中文文档 总结如下: ...

  9. django的简单原理

    一.自定义客户端和服务端的请求响应 1.客户端打开url,向服务器发出请求 2.服务端用socket写一个py,用于接收请求和做出响应 3.服务端接收请求 4.服务端模拟HTTP协议做出响应,状态行为 ...

  10. shiro简单学习的简单总结

    权限和我有很大渊源. 培训时候的最后一个项目是OA,权限那块却不知如何入手,最后以不是我写的那个模块应付面试. 最开始的是使用session装载用户登录信息,使用简单权限拦截器做到权限控制,利用资源文 ...

随机推荐

  1. 多项目git账户用户名和邮箱设置以及局部github代理

    因为公司使用自建的gitlab服务器所以需要配置两个git账户分别用来访问公司仓库和自己的github仓库. 前言: 首先给大家梳理一下多用户名或者说多邮箱使用git的理解误区.我们需要知道的是我们的 ...

  2. Echarts图表基本参数设置说明

    ECharts 是一款强大的数据可视化库,可以通过 JavaScript 构建交互式和动态的图表.在使用 ECharts 进行图表绘制时,我们可以通过设置各种参数来达到我们想要的效果.下面是对 ECh ...

  3. Centos8.4离线安装JDK+Tomcat+MySQL8.0+Nginx

    一.安装JDK 注:以下命令环境在Xshell中进行. 1.查询出系统自带的OpenJDK及版本 rpm -qa | grep jdk 2.如果显示已安装openjdk则对其进行卸载. 输入:rpm ...

  4. [GDOIpj222A] 点指兵兵

    第一题 点指兵兵 提交文件: bing.cpp 输入文件: bing.in 输出文件: bing.out 时间空间限制: 1 秒, 256 MB 你一定有过在两个物品之间犹豫不决的时候,想要借助一些方 ...

  5. [VBA] 实现SQLserver数据库的增删改查

    [VBA] 实现 SQLserver数据库的增删改查 问题背景 用于库存管理的简单Excel系统实现,能够让库管员录入每日出入库信息并进能够按日期查询导出数据,生成简要报表,以及数据修改与删除.非科班 ...

  6. Pix4Dmapper空间三维模型的应用实例:GIS选址分析

      本文介绍基于无人机影像建模完成后的结果,利用ArcMap软件进行空间选址分析,从而实现空间三维模型应用的方法. 目录 1 空间分析目标确立 2 基于基本约束条件的选址求解 2.1 坡度计算与提取 ...

  7. ElasticSearch之Nodes info API

    查看当前集群中各节点的信息,执行如下命令: curl -X GET "https://localhost:9200/_nodes?pretty" --cacert $ES_HOME ...

  8. Python 潮流周刊第 34 期(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  9. Java 并发编程(四)同步工具类

    本文使用的 JDK 版本为 JDK 8 基本同步工具类 闭锁(CountDownLatch) 闭锁是一种工具类,可以延迟线程的进度直到其到达终止状态.闭锁的作用相当与一扇门:在闭锁的状态到达之前,这扇 ...

  10. Spring源码学习笔记7——Spring bean的初始化

    一丶前言 上篇中我们了解了Spring bean的实例化--存在方法覆盖的使用CGLIB动态代理生成子类,反之反射调用构造函数.实例化后bean中的字段都是默认值,接下来就是对bean的属性进行填充, ...