Django编写完整用户登录

1 > django小白必会三板斧


	# 启动django项目之后 如何添加更多的功能
		回想自己编写的web框架 如果要添加功能 就去urls.py 和views.py
	# django自带重启功能
		当识别到项目中代码有变化之后 隔断时间就会自动重启 但是有时候会比较慢

   与浏览器打交道的视图函数都应该有返回值 常见的就是下列三个

1.1 > HttpResponse

   主要用于返回字符串类型的数据。


	from django.shortcuts import HttpResponse
	return HttpResponse('This is index')

在这里插入图片描述

1.2 > render

   主要用于返回html文件 并且支持模板语法(django自己写的)

	
	# html文件应该先在templates文件夹中创建
	return render(requesr, 'index.html', {'name':'bob'} )

在这里插入图片描述
在这里插入图片描述

1.3 > redirect

   主要用于重定向 括号内可以写其他网站的全称 也可以自己网站的后缀。


	return redirect('http://www.4399.com')
	'''	也可以直接跳转到自己写的页面 '''
	

在这里插入图片描述

2 > 登录功能

   我们之所以可以在浏览器地址栏中输入不同的路由访问到不同的资源,是因为我们在后端框架中提前开设了相应的访问接口所以用户才能访问。言外之意就是我们没有开设接口 那么肯定访问不到。
   具体步骤如下:


	1.开设接口返回登录界面
	

	2.登录界面需要使用bootstrap并且还需要自己编写css和js
		静态文件
		'''
			css文件、js文件、图片文件、第三方框架文件(bootstrap)
			上述文件都可以称之为是'静态文件' 
			在django中静态文件单独开设一个文件夹存储  默认叫static文件夹
			在该文件夹内还可以根据功能的不同继续划分不同的文件
				css文件夹 js文件 img文件夹 others文件夹
		'''
		

在这里插入图片描述

	3.页面需要获取前端用户数据并且传递给后端
		form表单
			action参数:控制数据的提交地址
    		method参数:控制请求的提交方式

在这里插入图片描述

	4.访问登录页面
		静态文件全部显示资源不存在
		http://127.0.0.1:8000/static/bootstrap-3.3.7-dist/css/bootstrap.min.css
		因为我们并没有开设静态资源访问的接口
	5.开设静态资源的访问接口
		理论上应该自己去路由层开设接口资源 但是由于静态文件资源使用频率很高
		只要是一个web项目都肯定需要 所以django为了避免开发者繁琐 
		提供了静态资源的配置文件 只需要填写固定的配置即可开设资源接口
		settings.py
			# 静态文件资源访问接口固定配置
				STATICFILES_DIRS = [
	        		os.path.join(BASE_DIR, 'static')
	    		]
			
			# html页面路径
				/static/mycss.css

在这里插入图片描述
在这里插入图片描述

	6.配置文件中的两点疑惑
		STATIC_URL = '/static/'  # 作用是什么
		STATICFILES_DIRS = []  # 为什么是列表(用来存储多个元素的)
		'''
			以该地址为例:/static/bootstrap-3.3.7-dist/css/bootstrap.min.css
			/static/是接口前缀 表示具备访问静态文件资源的权限
			具备了权限之后会拿着接口前缀后面的文件路径去列表中每个文件夹中查找
				bootstrap-3.3.7-dist/css/bootstrap.min.css
			找到一个就结束
			比如 static和static1里面都有a.txt 那么只会拿到static中的
		'''
	7.接口前缀动态绑定
		如果templates中有很多html文件并且都需要引入静态资源
		现在把接口前缀修改了 那么会造成什么结果???>>>:页面无法加载资源
		{% load static %}
		<link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}">

在这里插入图片描述
在这里插入图片描述

3 > request对象方法

   注意事项:


	提交post请求 默认会报403
	前期不需要过多考虑 直接去配置文件中注释一行即可
		MIDDLEWARE = [
    	# 'django.middleware.csrf.CsrfViewMiddleware',
		]

   1 > get请求和post请求都会触发同一个视图函数login的运行

	
	如何针对不同的请求执行不同的代码
		get: 返回一个登录页面
		post: 请求获取用户数据并校验

   2 > 获取当前请求方式


	request.method		返回的是纯大写的请求方式字符串
	'''
		由于get请求更加常见 post请求次之 所以还可以按照下列方式简写
	'''
	if request.method == 'POST':
		retuen HttpResponse('这是post请求返回的页面')
	return render(request, 'login.html')

在这里插入图片描述
在这里插入图片描述
   3 > 获取post请求提交的普通数据。


	request.POST      				结果是一个QueryDict 可以看成字典处理,值是一个列表
	
	request.POST.get('username')    
	request.POST.getlist('hobby')  
	
	'''
		get方法会拿到值列表中最后一个元素  而不是整个列表
		getlist方法会直接拿到整个值列表  
	'''

在这里插入图片描述在这里插入图片描述

在这里插入图片描述
   4 > 如何获取url后面携带的数据。


	request.GET				结果是一个QueryDict 可以看成字典处理
	
	request.GET.get('info')
 	request.GET.getlist('cityList')

	"""
  	特征与上述request.POST一致 使用场景也很多
  	https://www.lagou.com/wn/jobs?kd=python&isSchoolJob=1&city=%E4%B8%8A%E6%B5%B7&pn=1
 	"""
 	

4 > pycharm链接MySQL

   其实pycharm也可以充当很多数据库软件的客户端,连接位置如下:
   1 > pycharm右上方侧边 database。
   2 > pycharm左下方边角 database
   3 > 上述两个地方都没有 需要下载插件 或者直接重装一个正常的pycharm


	settings
		plugins
			搜索database下载apple即可
			

在这里插入图片描述

3.1 > 链接数据库

   步骤如下:

	
	1.选择数据库 
	2.首次链接需要下载驱动
		download driver...
	3.测试链接如果不通过 则需要换驱动重新下载使用
  		Driver:MySQL MySQL for 5.1

在这里插入图片描述
在这里插入图片描述

3.2 > django链接MySQL

   django默认自带一个sqlite3数据库 但是功能很少 仅用于本地测试。
在这里插入图片描述
   修改配置内容如下:

	
	 DATABASE = {
		'default':{
			'ENGINE': 'django.db.backends.mysql',
        	'NAME': 'jp04_3',						# 数据库指定库名
        	'HOST': '127.0.0.1',					# 数据库地址
        	'PORT': 3306,							# 数据库端口号
        	'USER': 'root',							# 数据库指定用户
        	'PASSWORD': 'mysqlabc',					# 数据库密码
		}
	
	}

在这里插入图片描述

   指定模块

	
	在项目同名的文件夹内的__init__.py
	或者应用名的文件夹内的__init__.py
	添加一行固定的代码
		import pymysql 
			pymysql.install_as_MySQLdb()

	'''
		django默认是使用mysqldb去连接数据库的
		但是这个模块已经不能用了 功能已经不维护了
		这个话的意思就是让django使用pymysql去连接mysql数据库
	'''

在这里插入图片描述

5 > django orm

5.1 > orm简介


	ORM:对象关系映射
	
	# 特点
	能够让不会写SQL的python程序员使用python语法就可以直接操作MySQL
  	好处:提升了开发效率...
    坏处:封装了SQL语句 有时候可能效率不高 还需要人为编写SQL调优
	
	# 概念
		表												类 
  	一行行数据					 			 	类产生的一个个对象
  	数据字段					  					对象的一个个属性

5.2 > orm基本使用

   1 > 编写类代码


	# 如果需要使用ORM 需要去应用下的models.py中编写代码

		class Users(models.Model):
	    uid = models.AutoField(primary_key=True)  	# 等价于uid int primary key auto_increment
	    name = models.CharField(max_length=32)  	# 等价于name varchar(32)
	    pwd = models.IntegerField()  				# 等价于pwd int

	

   2 > 执行数据库迁移命令


	python3 manage.py makemigrations  # 记录操作
	'''
		会在migrations文件下生成一个类似于日志的文件用于记录对数据库的操做记录
	'''
	
	python3 manage.py migrate  # 将操作迁移到数据库
	'''
		首次执行迁移命令 django还会自动创建一些默认需要使用到的表
	'''

在这里插入图片描述
在这里插入图片描述
   3 > 表名的特征


	Users								app01_users
 	由于django支持多个应用  为了区分不同应用下可能会出现相同的表名
  	所以自动加上了应用的前缀 因为同一个应用下不可能出现相同的表名
  	(只要你是个正常的程序员都不会犯这样的错误)

   4 > 扩展


	1.表的主键可以不写 orm会自动帮你写一个名为id的主键
	2.每次修改了跟数据库相关的python代码 都需要重新执行迁移命令
	

   针对两个迁移命令 可以采用pycharm提示功能编写。
在这里插入图片描述
在这里插入图片描述

5.3 > 数据操作


# 1.增
	user_obj = models.Users.objects.create(name='jack', pwd='333')
  print(user_obj)
  print(user_obj.uid)
  print(user_obj.name)
  print(user_obj.pwd)
# 2.查
	res = models.Users.objects.filter(name='jason')
  print(res)  # <QuerySet [<Users: Users object>]>
  print(res[0])  # Users object
  print(res[0].uid)  # 1
  print(res[0].name)  # jason
  print(res[0].pwd)  # 123
# 3.改
	models.Users.objects.filter(uid=1).update(name='jasonNB')
# 4.删
	models.Users.objects.filter(uid=3).delete()

  • 5
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Django连接SQLite3数据库的步骤如下: 1. 在settings.py文件中配置数据库信息,包括数据库类型、数据库名称、用户名、密码、主机地址等。 2. 在项目的根目录下创建一个名为db.sqlite3的SQLite3数据库文件。 3. 在models.py文件中定义数据模型,包括表名、字段名、字段类型等。 4. 在views.py文件中编写视图函数,通过ORM操作数据库,实现数据的增删改查等操作。 5. 在urls.py文件中配置URL路由,将请求映射到相应的视图函数。 6. 运行Django项目,访问相应的URL,即可实现对SQLite3数据库的操作。 以上就是Django连接SQLite3数据库的基本步骤。 ### 回答2: Django是一个非常流行的Python Web框架,它提供了一种灵活而强大的方式来开发Web应用程序。在Django中,使用数据库是非常常见的,因此,连接数据库是一个非常重要的话题。 SQLite3是Django的默认数据库引擎之一,这意味着如果您不指定任何其他数据库选项,则Django将使用SQLite3存储数据。SQLite3是一个嵌入式数据库引擎,它支持大多数标准SQL功能,因此它可以很好地满足大多数Web应用程序的需求。 连接SQLite3数据库的第一步是安装数据库引擎。在Django中,使用SQLite3非常简单,因为它已经包含在Python中。如果您已经安装了Python,则可以开始使用SQLite3。 要使用SQLite3,您需要确保在Django的设置(settings.py)文件中设置了DATABASES字典。DATABASES字典是用于配置数据库的主要方式,它定义了数据库引擎,名称,用户名称和密码等选项。 以下是一个示例DATABASES字典,它用于连接SQLite3数据库: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': 'mydatabase', } } 在这个例子中,我们设置default字典作为默认数据库,ENGINE选项指定了我们要使用的数据库引擎(即SQLite3),而NAME选项则指定了数据库的名称。这里我们使用了一个名为mydatabase的数据库,您可以根据自己的需要修改这些选项。 一旦DATABASES字典被设置,您就可以开始使用Django ORM(对象关系映射)来操作数据库了。ORM是一种将Python对象映射到数据库表中的技术,它使得操作数据库变得非常直观和容易。 例如,要在Django中创建一个新的模型(即定义一个新的数据库表),只需要创建一个新的Python类并继承自django.db.models.Model。以下是一个示例模型: from django.db import models class Book(models.Model): title = models.CharField(max_length=100) author = models.CharField(max_length=100) pub_date = models.DateField() 在这个示例模型中,我们定义了一个名为Book的Python类,它包含了三个字段:title,author和pub_date。这三个字段将映射到数据库表中的三个列。 现在我们已经定义了一个模型,接下来可以使用Django的管理器来将数据插入到数据库中了。以下是一个例子: from myapp.models import Book from datetime import date book = Book(title='The Great Gatsby', author='F. Scott Fitzgerald', pub_date=date(1925, 4, 10)) book.save() 在这个例子中,我们导入了名为Book的模型,并创建了一个新的Book对象。我们设置了几个字段的值,然后调用save()方法将该对象保存到数据库中。 总之,连接SQLite3数据库非常简单,只需在Django的设置中设置DATABASES字典,就可以开始使用Django ORM来操作数据库了。使用Django ORM,您可以轻松创建新的模型、查询数据和更新数据,使得开发Web应用程序变得非常容易和直观。 ### 回答3: Django作为一款高效的Python Web框架,在开发过程中经常需要使用数据库。其中,sqlite3是Django默认支持的数据库之一,通过Django连接sqlite3数据库也比较简单。下面是具体的步骤: 1. 创建Django项目 首先,需要创建一个Django项目。可以使用以下命令创建: ``` django-admin startproject project_name ``` 2. 配置连接sqlite3数据库 进入项目目录,在settings.py文件中可以找到已经定义好的DATABASES配置,可以根据需要进行更改。默认的sqlite3数据库配置如下: ``` DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', } } ``` 其中,'NAME'选项表示sqlite3数据库文件的路径,它默认在项目根目录下创建了db.sqlite3文件,也可以更改为自定义的路径。其他选项暂时不需要更改。 3. 创建数据库表格 连接数据库的配置完成后,就可以使用Django提供的ORM(对象关系映射)功能来创建数据库表格了。在Django中,可以使用模型(model)来定义表格,它们位于应用程序(app)中的models.py文件中。 例如,我们在一个名为'blog'的应用中,定义一个名为'Article'的模型来表示文章: ```python from django.db import models class Article(models.Model): title = models.CharField(max_length=100) content = models.TextField() pub_time = models.DateTimeField(auto_now_add=True) ``` 在创建完模型后,需要执行以下命令来生成数据库表格: ``` python manage.py migrate ``` 这条命令会创建一个名为'django_migrations'的表格,用于记录迁移信息。同时,也会自动创建一个名为'blog_article'的表格,用于存放文章数据。 4. 操作数据库 在完成以上步骤后,就可以使用ORM来对数据库进行增删改查操作了。例如,可以使用以下代码来创建一篇文章: ```python from blog.models import Article new_article = Article(title='My first article', content='Hello, Django!', pub_time='2022-01-01 00:00:00') new_article.save() ``` 这个例子中,我们导入了'Article'模型,并创建了一个新的'article'对象,再调用该对象的'save'方法就可以将数据保存到数据库中。 除了创建数据,ORM还支持多种查询操作,例如全表查询、条件查询、排序查询等,具体可以参考Django官方文档。 综上所述,Django连接sqlite3数据库非常简单,只需要通过修改配置文件与定义模型来完成。在使用ORM进行操作时,也无需编写SQL语句,非常方便。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值