django 哪些事
主要分类
1-关于用户登陆返回原访问登陆页面
2-settings- 配置~~~
3-关于数据库的便捷用法__双下划线的魔法法应用
1,——————————————————关于用户登陆返回原访问登陆页面
一句话概括:在GET请求的时候获取一个原网页的链接, 之后再POST表单提交过之后,把这个原网页链接,拿过来使用
1 def register(request): 2 if request.method == 'GET': 3 ret = render(request, 'register.html') 4 ret.set_cookie('register_form', request.META.get('HTTP_REFERER', '/')) 5 return ret 6 else: 7 name = request.POST.get('name', '') 8 password = request.POST.get('password', '') 9 register_form = request.COOKIES.get('register_form', '') 10 if register_form: 11 ret = HttpResponse(f""" 12 返回原网页 13 <a href='{register_form}'>点击返回原网页</a> 14 """) 15 ret.set_cookie('name', name) 16 print(register_form, '<<<<<<<<<<<<<register, 1') 17 return ret 18 else: 19 print(register_form, '<<<<<<<<<<<<<register, 0') 20 return redirect(reverse('index'))
2,——————————————————settings- 配置~~~打印sql语句
一句话概括:在settings中配置需要用到的地址,变量,中间件,数据库。。。。。。。。。。。。。
1 # 打印mysql语句 2 LOGGING = { 3 'version': 1, 4 'disable_existing_loggers': False, 5 'handlers': { 6 'console':{ 7 'level':'DEBUG', 8 'class':'logging.StreamHandler', 9 }, 10 }, 11 'loggers': { 12 'django.db.backends': { 13 'handlers': ['console'], 14 'propagate': True, 15 'level':'DEBUG', 16 }, 17 } 18 }
——————————————————settings- 配置~~~配置邮箱
1 # 关于邮箱发送激活的一些数据 2 # 邮箱的服务器地址 3 EMAIL_HOST = 'smtp.163.com' 4 # 端口 5 EMAIL_PORT = 25 6 # 用户名 7 EMAIL_HOST_USER = '################' 8 # 密码 9 EMAIL_HOST_PASSWORD = '************' 10 # 从哪个邮箱发 11 EMAIL_FROM = '##################'
import smtplib from email.mime.text import MIMEText from email.utils import formataddr msg = MIMEText('老大,我今天需要请假。', 'plain', 'utf-8') # 发送内容 msg['From'] = formataddr(["frank", '*********@163.com']) # 发件人 msg['To'] = formataddr(["jack", '********@qq.com']) # 收件人 msg['Subject'] = "【请回复】" # 主题 server = smtplib.SMTP("smtp.163.com", 25) # SMTP服务 server.login("*********@163.com", "授权码或密码") # 邮箱用户名和密码 把密码改成授权码就行了 server.sendmail('********@163.com', ['********@qq.com', ], msg.as_string()) # 发送者和接收者 server.quit()
——————————————————settings- 配置~~~媒体文件和css,js
1 # css,js。。。的存储位置 2 STATIC_URL = '/static/' 3 STATICFILES_DIRS = [ 4 os.path.join(BASE_DIR, 'static'), 5 ] 6 7 # 媒体文件的存储位置 8 MEDIA_URL = '/static/media/' 9 MEDIA_ROOT = os.path.join(BASE_DIR, 'static', 'media')
1 TEMPLATES = [ 2 { 3 'BACKEND': 'django.template.backends.django.DjangoTemplates', 4 'DIRS': [os.path.join(BASE_DIR, 'templates')] 5 , 6 'APP_DIRS': True, 7 'OPTIONS': { 8 'context_processors': [ 9 'django.template.context_processors.debug', 10 'django.template.context_processors.request', 11 'django.contrib.auth.context_processors.auth', 12 'django.contrib.messages.context_processors.messages', 13 # 媒体数据的加载, 图片, 视频。。。 14 'django.template.context_processors.media', 15 ], 16 }, 17 }, 18 ]
3,—————————————————关于数据库的便捷用法__双下划线的魔法法应用
class StudentInfo(models.Model): name = models.CharField(max_length=20) school = models.ForeignKey('SchoolInfo', related_name='student') teacher = models.ManyToManyField('TeacherInfo', related_name='student') class SchoolInfo(models.Model): name = models.CharField(max_length=20) class TeacherInfo(models.Model): name = models.CharField(max_length=20) school = models.ForeignKey('SchoolInfo', related_name='teacher')
a = ['尚硅谷学校的老师:', models.TeacherInfo.objects.filter(school__name='尚硅谷').values_list('name')] b = ['尚硅谷学校的学生:', models.StudentInfo.objects.filter(school__name='尚硅谷').values_list('name')] d = ['谢天老师的学生:', models.StudentInfo.objects.filter(teacher__name='谢天').values_list('name')] c = ['刘渊老师的学生:', models.StudentInfo.objects.filter(teacher__name='刘渊').values_list('name')] e = ['刘渊老师的学校:', models.SchoolInfo.objects.filter(teacher__name='刘渊').values_list('name')] f = ['小明1学生的老师:', models.TeacherInfo.objects.filter(student__name='小明1').values_list('name')] g = ['小明1学生的学校:', models.SchoolInfo.objects.filter(student__name='小明1').values_list('name')]
浙公网安备 33010602011771号