IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Django学习 -> 正文阅读

[Python知识库]Django学习

Django学习

Djanago项目搭建

1.典型几个命令–>跟scrapy框架的使用差不多

#1.创建WEB服务器
django-admin startproject guest
#2.进入到这个项目中去-->创建app应用
python manage.py startapp sign #创建app应用
#运行项目 
python3 manage.py runserver

2.Django的app模块目录结构

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.Django视图

1.)路由映射

from django.urls import path   # 导入path函数
from django.urls import re_path #导入re_path函数
from django.urls import include  # 导入include函数
#三个导入内容的区别
#第一个是path直接匹配的 第二个支持正则匹配 第三个是进行包含文件使用的  典型配置包含sign app的一个目录 然后进行组合引用目录from django.conf.urls import url, include

urlpatterns=[

re.path(r'^api/',include('sign.urls',name="sign")),#即包含一个一级目录
]

#二级目录的创建

from django.conf.urls  improt url
from sign import views_if

urlpattern=[
re_path(r'^get_book',views.getbook,name="sign")
]

#最终的路径/api/get_book


两种views显示内容的方式

1.利用from django.http import HttpResponse的形式去显示内容
	#s="Hello  World"
    #return HttpResponse(s)
2.利用模板渲染的形式去显示内容
from django.shortcuts  import render
    return render(request,"index.html")

2.)登录功能实现

①方法使用-->get方法和post方法,调用行动的-->form标签 html设置
<form method="get"  action="/login_action/">
</form>
②标签使用
{%  csrf_token %}
常量使用
{{error}}#变量值来自于views.py文件去
③cookie和session的使用
#设置的
response.set_cookie('user',username,3600)#获取cookie
request.session['user']=username
#获取cookie和session
reqeust.COOKIES.get('user','')
reqeust.seesion.get('user','')#-->获取session代
注意点
如果是使用session的话 需要设置同步数据库 常用sqlites
python3 manage.py migrate

④设置重定向页面的
#from django.http import HttpResponse,HttpResponseRedirect  #导入包
HttpResponseRedirect('/envent_manage')

3.)Django自带认证系统

#1.创建管理员账户
python3 manage.py createsuperuser

#2.认证登录(根据authenticate判断认证)
user=auth.authenticate(username=username,password=password)
if user is not None:
  auth.login(request,user)#登录
#防止未经授权访问,在def 功能前面加@login_required 就可以判断是否登录
url(r'^accounts/login/$',views.index)
#-->即在登录页面默认跳转到登录的页面

4.Django模型

1).创建一个模型-->(含义一般一个模型可以理解为一个数据库的表)

from django.db.models.Model

class Event(models.Model):
      name=models.CharField(max_length=100)
      creat_time=model.DateTimeField(auto_now=True)#这个自动获取时间代
def __str__(self):
      return self.name

2.)admin 后台管理的模块处理

#在admin中显示一个模块方法
class EventAdmin(admin.ModelAdmin):
      list_display=['name','status','start_time','id']#展示的内容设置
      search_fields=['name']#搜索栏设置
      list_filter=['status']#设置过滤器

admin.site.register(Event)

3.)数据操作处理

#增
方法1
e1=Envet(name='测试')
e1.save()
方法2
Event.objects.create(name='测试')
#删
g=Guset.object.get(phone='13612121121')
g2.delete()
#改
g2.name='测试2'
g2.uptade()
#查
table.object.get()#返回一条获取的结果
table.object.all()#获取所有返回的结果
table.object.filter()#返回一个对象列表

#组合使用方法

即在views.py文件获取数据然后进行输出到文件中去
def event_manage(request):
    username=request.session.get('user','')
    return render(request,"envent_manage.html",{"user":username})#即一样的道理在render模板渲染的时候给渲染的数据进行传递数据就好了
    

5.Django模板

1).结合bootsrap

{% load bootstrap3 %}
{% bootstrap_css %}
{% bootstrap_javascript %}
{% for envent in envets %}#批量循环获取数据的处理

2.)结合分页器使用

>>> from django.core.paginator import Paginator#导入Paginator模块
>>> list1=[i for i in range(0,150)]#使用列表生成器生成一个包含150个数字的列表
>>> page1=Paginator(list1,10)#生成一个Paginator对象
>>> print(page1.count)#打印总的记录数,即列表list1的长度
150
>>> print(page1.num_pages)#打印总的页数,即总记录数除以每页显示的条目数
15
>>> print(page1.page_range)#页数的列表
range(1, 16)
>>> print(page1.page(1))#打印第一页的page对象
<Page 1 of 15>
>>> page1.page(1).object_list#打印第一页的所有记录
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> page1.page(2).object_list#打印第二页的所有记录
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> page1.page(2).next_page_number()#打印当前的页(第2页)的下一页的页码
3
>>> page1.page(2).has_next()#第2页是否有下一页
True
>>> page1.page(2).has_previous()#第2页是否有上一页
True
>>> page1.page(2).has_other_pages()#第2是否有其他页
True
>>> page1.page(2).start_index()#第2页第一条记录的序号
11
>>> page1.page(2).end_index()#第2页最后一条记录的序号
20
>>> page1.page(0)#第0页是否有记录,会报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
    ...
    raise EmptyPage(_('That page number is less than 1'))
django.core.paginator.EmptyPage: <exception str() failed>
>>> page1.page(15)#打印第15页的对象
<Page 15 of 15>

典型分页器使用案例

6.mysql服务器搭建

mysql搭建服务器的几个坑

坑①
注意mysql版本的问题
如果版本有问题会出现mysql服务
这种情况
本地计算机上的mysql服务器启动后停止
坑②
对于安装mysql文件一点要在mysql安装目录下的bin进行安装
坑③
对于data目录下的是保存日志登录这些的
坑④路径必须带上双引号-->我是这么解决的 完美解决问题

修改数据库连接密码

set password for username @localhost = password(newpwd);

导入数据
导入excel数据思路
导入.sql格式数据方法

7.项目部署

django项目部署方案
mysql服务器安装包下载
问题1的情况以及成功解决问题的安装方法
错误评论区典型的几种情况

根据小明师傅的项目rdadme直接进行搭建

注意事项

①在导入数据库时可能会遇到mysql服务器版本不兼容的情况
https://blog.csdn.net/westworld2017163com/article/details/83150628
解决方法
将编码改为这个
utf8mb4_general_ci
②
数据库表设置格式要设置为utf-8
否则会爆错
设置方法
https://blog.csdn.net/L4WDgosh/article/details/118280140

导入就不说了
这里进行导入就好了
在这里插入图片描述

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-10-21 12:08:59  更:2021-10-21 12:09:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 20:30:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码