Django开发笔记一

Django开发笔记二

Django开发笔记三

Django开发笔记四

Django开发笔记五

Django开发笔记六

1、基于类的方式重写登录:views.py:

from django.views.generic.base import View

class LoginView(View):
def get(self,request):
return render(request, "test/login.html", {}) def post(self,request):
user_name = request.POST.get("username", "")
pass_word = request.POST.get("password", "")
user = authenticate(username=user_name, password=pass_word) if user is not None:
dj_login(request, user)
return render(request, "test/index.html", {})
else:
return render(request, "test/login.html", {"msg": "用户名或密码错误"})

users.py:

url(r'^login/$', LoginView.as_view(), name="login"),

2、用python变量描述文件路径,方便统一修改

                        <a style="color:white" class="fr registerbtn" href="{% url 'register' %}">注册</a>
<a style="color:white" class="fr loginbtn" href="/login/">登录</a>
{% load staticfiles %}
......
<link rel="stylesheet" type="text/css" href="/static/css/test/reset.css">
<link rel="stylesheet" type="text/css" href="/static/css/test/animate.css">
<link rel="stylesheet" type="text/css" href="{% static 'css/test/style.css'%}">

3、验证码

django-simple-captcha文档:http://django-simple-captcha.readthedocs.io/en/latest/usage.html#installation

urls.py:

urlpatterns = [
url(r'^captcha/', include('captcha.urls')), ]

settings.py:

INSTALLED_APPS = [
'captcha', ]

forms.py:

class RegisterForms(forms.Form):
email = forms.CharField(required=True)
password = forms.CharField(required=True, min_length=6)
captcha = CaptchaField()

views.py:

class RegisterView(View):
def get(self, request):
register_forms = RegisterForms()
return render(request, "test/register.html", {"register_forms": register_forms}) def post(self, request):
register_forms = RegisterForms(request.POST)
if register_forms.is_valid():
email = request.POST.get("email", "")
pass_word = request.POST.get("password", "")
if UserProfile.objects.filter(email=email):
return render(request, "test/register.html", {"msg": "邮箱已被注册"})
else:
user_profile = UserProfile()
user_profile.username = email
user_profile.email = email
user_profile.password = make_password(pass_word)
user_profile.save()
return render(request, "test/login.html", {}) else:
return render(request, "test/register.html", {"register_forms": register_forms})

register.html:

                 <form id="email_register_form" method="post" action="/register/" autocomplete="off">
<div class="form-group marb20 ">
<label>邮     箱</label>
<input type="text" id="id_email" name="email" value="" placeholder="请输入您的邮箱地址" />
</div>
<div class="form-group marb8 ">
<label>密     码</label>
<input type="password" id="id_password" name="password" value="" placeholder="请输入6-20位非中文字符密码" />
</div>
<div class="form-group marb8 captcha1 ">
<label>验 证 码</label> {{ register_forms.captcha }}
</div>
<div class="error btns" id="jsEmailTips"></div>
<div class="auto-box marb8">
</div>
<input class="btn btn-green" id="jsEmailRegBtn" type="submit" value="注册并登录" />
{% for key ,error in register_forms.errors.items %}{{ error }}{% endfor %}{{ msg }}
{% csrf_token %}
</form>

4、文件上传:

settings.py

MEDIA_URL = '/static/images/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'static/images/')

models.py:

image = models.ImageField(upload_to="course/%y/%m", verbose_name=u"封面图", max_length=100)

html显示:

          {% for video in video_list%}
<div class="item">
<a href="">
<img src="{{ MEDIA_URL }}{{ video.image }}">
<p class="title">{{ video.name }}</p>
</a>
</div>
{% endfor %}

需要在settings.py:

TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')]
,
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
.......
'django.template.context_processors.media', # 配置html页面获取MEDIA_URL路径
],
},
},
]

最新文章

  1. Linux_用户级_常用命令(2):cd
  2. NuGet学习笔记2——使用图形化界面打包自己的类库
  3. JS中同名函数有效执行顺序
  4. AWS 搭建 VPN 服务(PPTP &amp; L2TP) 整理
  5. 不容易系列之二[HDU2042]
  6. HDU 5538 L - House Building 水题
  7. Aizu 2302 On or Off dfs/贪心
  8. Node.js权威指南 (13) - 数据库访问
  9. Tomcat 的context.xml
  10. Qt中QFtp获取带有中文的文件名称出现乱码的解决方法(执行操作前就转换编码)
  11. Redis 3.0集群搭建/配置/FAQ
  12. bLock 回调 就是这么简单!
  13. nopCommerce安装教程
  14. vue学习第一篇 hello world
  15. 【源码分析】你必须知道的string.IsNullOrEmpty &amp;&amp; string.IsNullOrWhiteSpace
  16. vs2017 EFCore 迁移数据库命令
  17. C语言可变参数
  18. OGG初始化之使用数据库实用程序加载数据
  19. sap hana 数据库 EBS
  20. ISD9160学习笔记04_ISD9160音频编码代码分析

热门文章

  1. MT【17】利用柯西不等式求三角的最大值
  2. 自学Python5.1-面向对象与面向过程
  3. BroadcastReceiver 接收系统短信广播
  4. 【BZOJ2000】[HNOI2000]取石头游戏(贪心,博弈论)
  5. 姿态角(Euler角):yaw pitch roll
  6. 51单片机 | I/O口直接输入输出实例
  7. 使用debootstrap制作debian-jessie系统docker镜像
  8. GNOME Shell Extension常用扩展
  9. Luogu 1315 【NOIP2011】观光公交 (贪心)
  10. Java设计模式--缺省适配器模式