本文参考自银角大王的博客

基本配置

常用命令:

django-admin startproject xxx(项目名)
python3 manage.py startapp xxx(app名)
python3 manage.py runserver ip:port(ip、端口)
python3 manage.py syncdb
python3 manage.py makemigrations
python3 manage.py migrate

1.安装django

pip3 install django

但是我在安装django的时候,总是遇到 Time Out错误,于是经过一番Goole,在使用pip3安装django时设置超时时间即可,如果更改命令为

pip3 --default-timeout=1000 install -U django

2.创建django工程

方式一:命令行创建
django-admin startproject [项目名称]
#例如
django-admin startproject mysite方式二:pycharm创建
File -> New Project ->选择django即可

分析创建后的工程目录结构:

-mysite            #django工程名-manage.py        #管理django程序-mysite-__init__.py-setting.py    #配置文件   -urls.py       #url映射表,也叫url映射关系-wsgi.py       #遵循wsgi规范,是否记得之前的wsgiref模块, uwsgi + ngix

下面对各个模块解释说明:

manage:管理django程序

setting:配置文件

urls:url映射关系

wsgi:遵循wsgi规范,是否记得之前的wsgiref模块, uwsgi + ngix

3.运行django程序

python3 manage.py runserver [ip:port]
#例如
python3 manage.py runserver 127.0.0.1:8000

神奇的事情发生了,浏览器出现了一个久违的画面

4.创建app

首先要cd到你的工程目录下,本文则 cd mysite,然后执行命令

python3 manage.py startapp blog

此时工程的目录结构如下

-mysite-blog-migrations-__init__.py-admin.py-apps.py-models.py-tests.py-views.py-mysite-__init__.py-settings.py-urls.py-wsgi.py-db.sqlite3-manage.py

下面进行一一解释:

migrations:  数据修改标结构

admin:      django为我们提供的后台管理

apps:    配置当前的app

models:   ORM,创建制定的类,通过命令可以生成数据库结构

tests:    单元测试

views:     业务代码

5.小试牛刀

先简单做一个登录界面,并且记录一下第一次创建django项目遇到的问题

创建项目,以及添加app这里不再赘述,上述已经做了解释,下面上干货了,项目的目录结构如下:创建了static、template 2个文件夹,一个用于存放静态文件,一个存放模版

下面我展示一下各个文件的代码,然后在做填坑操作:

在login.html中我们创建了一个表单,搭建登录界面,代码如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="../static/commons.css"><style>label{width: 80px;}#error_info{color: red;}</style>
</head>
<body><form action="/login/" method="post"><p id="error_info">{{ error_msg }}</p><p><label for="username">用户名:</label><input type="text" name="username" placeholder="请输入用户名"></p><p><label for="username">密码:</label><input type="password" name="pwd" placeholder="请输入密码"></p><p><input type="submit" value="登录"></p></form></body>
</html>

View Code

在views中我们创建了业务相关的操作

from django.shortcuts import render
from django.shortcuts import redirectdef login(request):if request.method == 'POST':username =  request.POST.get('username',None)pwd = request.POST.get('pwd',None)print(username,pwd)if username == 'xm' and pwd == '123456':return redirect('https://www.baidu.com')else:return render(request,'login.html',{'error_msg': '用户名或密码错误!'})return render(request,'login.html')

View Code

填坑操作:

坑1:

你会发现我们在创建完项目和app后的工程目录下,新创建了两个文件夹,一个是static,还有一个是templates,其中static用于存放一些静态文件,比如css,js等,templates存放一些模版,因为我们不可能在views.py的方法中通过字符串搭建界面,一个是不方便,一个是没法调试,但是随机而来就是如果和项目做关联。

templates如何管理,否则一直报错404,如何在配置呢?别怕坑我已经给你填平了,在setting.py文件中其实细心的你已经发现了有一个TEMPLATES字段,没错,就是在这理修改,如果你更换了目录,也要修改这个配置文件的目录,否侧还是404,本项目是将templates和工程目录平级的目录下,所以配置如下:

坑2:

在学习web的时候,我们在html中引入外部的css时,样式很快就是显示出来了,可是我在static文件中创建commons.css时,在login.html中引入了,样式却不起作用,why?what are  you fucking?,于是掐脚一算,应该还是和配置文件有关系,于是我就尝试了修改配置文件,发现配置文件中除了STATIC_URL = '/static/'以外没有和路径有关系的啊,后来经过Google大爷找到的答案,配置如下:

STATIC_URL = '/static/'是配置文件默认的配置,此时我们需要新增静态文件夹的路径配置,如上图框框所示,注意名字必须正确,而且别忘了STATICFILES_DIRS是一个元组,必须在元素后面加','

坑3:

在urls.py文件中默认配置如下:

from django.contrib import admin
from django.urls import pathfrom blog import viewsurlpatterns = [path('admin/', admin.site.urls),
]

我们的登录页面也要再次配置,所以我们仿照默认配置加上自己的配置

from django.contrib import admin
from django.urls import pathfrom blog import viewsurlpatterns = [path('admin/', admin.site.urls),path('login/', views.login)
]

似乎一切准备就绪,我们运行项目发现一切安好,效果出来了,

注意到我们的login.html文件中表单的action了吗?我们写的action='/login' method='post',意味着我们提交给的还是本页面,请求方式为post请求

当我们填写完信息后,点击提交按钮后,坑来了,报错了,这事什么问题,有事找Google啊,找了好半天,找到问题了,因为出现在urls.py上,

解决办法如下:

之前我们在urls.py中配置过login对应方法,因为我们是根据默认配置写的,出什么问题?不应该啊,可是真的就是这个配置问题,问题就出现在'login/'这个斜杠上

解决办法有两种:

第一种: 修改urls.py,去掉path('login/', views.login)后面的斜杠,为path('login', views.login)

第二种: 修改login.html,将<form action="/login" method="post">修改为<form action="/login/" method="post">

推荐使用第一种,统一urls.py文件的格式。

这样文件就解决了,可是随之而来的还有一个问题,也就是坑4了,继续往下看吧

坑4:

在解决了坑3问题后,我们点击提交按钮后,发现又报了另一个错,what funck your 祖宗?

幸亏这个问题不是那么恶心,否则果断弃坑,只需要将settings.py中的一行代码注释,即可发送请求了。

刷新点击“提交”按钮,你会发现,一切是那么美好和值得。

转载于:https://www.cnblogs.com/it-q/p/9303729.html

django基础篇01-环境的搭建和项目的创建相关推荐

  1. Django框架(2.django框架环境的搭建、项目的创建、目录文件的介绍、以及运行环境)

    Django虚拟环境和flask的虚拟环境的搭建是一样的 参考 :    https://blog.csdn.net/wei18791957243/article/details/85069310 D ...

  2. 视觉slam学习|基础篇01

    系列文章目录 SLAM基础篇01 SLAM基础篇02 目录 系列文章目录 前言 SLAM是干什么的? SLAM的数学建模 机器人学基础 齐次矩阵 关于旋转的表示:旋转向量.欧拉角.四元数 李群和李代数 ...

  3. mysql经典总结文章_MySQL基础篇(01):经典实用查询案例,总结整理

    MySQL基础篇(01):经典实用查询案例,总结整理 发布时间:2020-02-26 22:25:21 来源:51CTO 阅读:244 作者:知了一笑 本文源码:GitHub·点这里 || GitEE ...

  4. AI on Android:安卓平台上的人工智能应用实战(01.环境的搭建)

    AI on Android:安卓平台上的人工智能应用实战(01.环境的搭建) 人工智能可以说是近些年来最热门的词汇之一,可是大多数人工智能都是工作在后端的.作为Android工程师的我们也应该了解一些 ...

  5. 自然语言处理——基础篇01

    自然语言处理--基础篇01 一.什么是自然语言处理? 二.自然语言处理的难点与特点? 三.语言模型 四.NLP的常见任务类型 1. 中文分词 2. 子词切分(Subword) 3. 句法分析 4. 语 ...

  6. 基础篇 | 01 机器学习基础

    本系列概述 核心内容是深度学习,只不过我们会进行代码实践,来巩固我们讲的概念的基础.会使用机器学习开发可以实际使用的工程项目,这也是我们这个系列跟其它机器学习最大区别的地方. 深度学习的意义 当然,不 ...

  7. Java开发环境的搭建以及使用eclipse创建项目

    一.Java 开发环境的搭建 这里主要说windows环境下怎么配置Java环境.如果是Linux环境参考本博客另一篇文章即可: Linux环境安装卸载JDK 1.首先安装JDK java的SDK简称 ...

  8. aws搭建java项目_AWS 创建开源 UI 项目:这是新开源设计系统的第一步

    Amazon Web Services 发布了 AWS UI 以及 Porting Assistant for .NET UI,后者使用了前者的组件,并且已公开源代码仓库.而 AWS UI 项目根据 ...

  9. stm32f4 hal 4位数码管_STM32裸机开发基础篇01开发环境搭建(HAL库)

    前言 众所周知,在32位单片机中,STM32占有重要市场份额,其社区活动频繁,网上相关资料也比较多,无论是学习入门,还是工作使用,都无疑是极好的选择,本节开始,我们将学习如何使用STM32,首先,我们 ...

最新文章

  1. 河科大c语言上机实验答案,2016年河南科技学院信息工程学院C语言上机编程考研复试题库...
  2. js递归函数使用介绍
  3. 为什么初创企业应该计算 LTV / CAC,以及如何正确应用它?
  4. 《Android编程权威指南》-读书笔记(七) -处理旋转设备
  5. java 项目做多级缓存_【开源项目系列】如何基于 Spring Cache 实现多级缓存(同时整合本地缓存 Ehcache 和分布式缓存 Redis)...
  6. container-with-most-water(最大蓄水问题)
  7. 国家和货币(符号/图片)数组(countries and currency symbol array)
  8. Android开发之网络
  9. ajax异步下载文件并判断状态
  10. 最好用的 10 款 MySQL 管理工具横向测评 - 免费和付费到底怎么选?
  11. 如何以16进制打开dll文件
  12. Python爬虫爬取一页韩寒新浪博客
  13. [转帖]「白帽黑客成长记」Windows提权基本原理(上)
  14. android 5.1一键root工具箱,最新的安卓5.1.1 ROOT教程(不需要刷第三方内核)
  15. 中标麒麟服务器性能怎么样,中标麒麟Linux系统的性能分析及工具(74页)-原创力文档...
  16. Wifi的密码长度有何限制
  17. 使用gdiplus显示gif图片
  18. python如何输出日期_Python日期常用操作
  19. MFC实现五子棋游戏
  20. php面试题目100及最佳答案,2020最新PHP面试100题(一)

热门文章

  1. 使用Zabbix2.2自带的Mysql监控模板监控数据库
  2. html5制作线路图,HTML5画电路图
  3. php excel 导入大量,用phpExcelReader不能导入大量数据解决办法
  4. 隆冬寒骨,风吹十一豪迈
  5. java 异常总结_Java异常的十大问题总结
  6. python中collections中的counter类_了解Python的collections.Counter类型
  7. 学python的注意点_python学习入门细节知识点
  8. 2019-12-17 TCP报头结构
  9. CentOS 7.x 默认防火墙 yum install firewalld
  10. /etc/udev/rules.d/10-usbstorage.rules