Djanago项目搭建
1.典型几个命令–>跟scrapy框架的使用差不多#1.创建WEB服务器 django-admin startproject guest #2.进入到这个项目中去-->创建app应用 python manage.py startapp sign #创建app应用 #运行项目 python3 manage.py runserver2.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设置②标签使用 {% 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对象>>> 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 " ", line 1, in ... raise EmptyPage(_('That page number is less than 1')) django.core.paginator.EmptyPage: >>> page1.page(15)#打印第15页的对象
典型分页器使用案例
6.mysql服务器搭建mysql搭建服务器的几个坑
坑① 注意mysql版本的问题 如果版本有问题会出现mysql服务 这种情况 本地计算机上的mysql服务器启动后停止 坑② 对于安装mysql文件一点要在mysql安装目录下的bin进行安装 坑③ 对于data目录下的是保存日志登录这些的 坑④路径必须带上双引号-->我是这么解决的 完美解决问题
修改数据库连接密码
set password for username @localhost = password(newpwd);
导入数据
导入excel数据思路
导入.sql格式数据方法
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
导入就不说了
这里进行导入就好了



