def register_handle(request): # 注册 # 接收用户输入 post = request.POST uname = post.get("user_name") upwd = post.get("pwd") upwd2 = post.get("cpwd") utel = post.get("tel") email = post.get("email") print(email) # 密码加密 s1 = sha1() s1.update(upwd.encode("utf-8")) # 必须指定要加密的字符串的字符编码 upwd3 = s1.hexdigest() # 获得加密之后的结果 # 创建对象,保存到数据库 user = MyUser() user.name = uname user.upwd = upwd3 user.phone = utel user.email = email user.save() print("存入成功") """发送邮件""" # 组织邮件信息 subject = "心居客欢迎信息" message = "" sender = settings.EMAIL_FROM receiver = [email] html_message = "<h1>欢迎%s成为心居客注册会员,您的账号为:%s,密码为:%s" % (uname, uname, upwd) send_mail(subject, message, sender, receiver, html_message=html_message) # 注册成功,转到登录界面 return render(request, "user/login.html", {"title": "用户注册"})
def create(self, validated_data): if MyUser.objects.filter(display_name=validated_data['display_name']).count() > 0: raise ValidationError({"email": ["This user has already been registered"]}) username = validated_data.get('display_name') display_name = validated_data.get('display_name') points = validated_data.get('points', 0) country = validated_data.get('country') user_obj = MyUser( username=username, display_name=display_name, points=points, country=country, ) user_obj.save() return user_obj
def jwt_payload_handler(user): return { 'user_id': user.pk, 'username': user.username, 'scope': MyUser.get_scope(user), 'exp': timezone.now() + settings.JWT_AUTH['JWT_EXPIRATION_DELTA'], }
def jwt_response_payload_handler(token, user=None, request=None): url_name = request.resolver_match.url_name if url_name == 'login-worker': if MyUser.is_worker(user): return { 'token': token, 'worker': PublicWorkerDetailSerializer(user.worker).data, 'scope': MyUser.get_scope(user), } raise ValidationError({"detail": "Must be a worker."}) elif url_name == 'login-admin': if MyUser.is_director(user) or MyUser.is_technologist(user): return { 'token': token, 'user': UserProfileSerializer(user).data, 'scope': MyUser.get_scope(user), } raise ValidationError({"detail": "Must be an admin."})
class Post(models.Model): post = models.AutoField(primary_key=True) user = models.ForeignKey(MyUser(id), on_delete=models.CASCADE, blank=True, null=False) content = models.TextField(blank=True, null=True) photo = models.FileField(null=True) created_at = models.DateTimeField(auto_now_add=True) hashtag = models.CharField(max_length=1000) public = models.CharField(max_length=100) feeling = models.CharField(max_length=1000, blank=True, null=True)
class Comment(models.Model): comment = models.AutoField(primary_key=True) post = models.ForeignKey(Post, on_delete=models.CASCADE, blank=False, null=False) user = models.ForeignKey(MyUser(id), on_delete=models.CASCADE, blank=False, null=False) content = models.TextField(blank=True, null=True) created_at = models.DateTimeField(auto_now_add=True)
def register(request): if request.method == 'GET': # GET 访问http://127.0.0.1:8000/register/ return render(request, 'register.html') if request.method == 'POST': # 1. 先获取注册的账号和密码和确认密码 username = request.POST.get('username') password = request.POST.get('password') password2 = request.POST.get('password2') # 2. 判断用户名是否已经被注册过 user = MyUser.objects.filter(username=username).first() if user: # 已经存在该账号 err_name = '该账号已被注册,请换一个账号注册' # return HttpResponse(err_name) return render(request, 'register.html', {'err_name': err_name}) # 3. 判断密码和确认密码是否相同 if password and password2: if password != password2: err_pwd = '密码和确认密码不一致,请修改密码' data = {'err_pwd': err_pwd} return render(request, 'register.html', data) else: err_pwd = '密码不能为空' return render(request, 'register.html', {'err_pwd': err_pwd}) # 4. 如果用户名不存在,且密码和确认密码相同,则实现注册,保存数据 user = MyUser() user.username = username user.password = password user.save() # return render(request, 'login.html') # 实现跳转到登录页面 return HttpResponseRedirect('/login/')
def test_fields(self): item = MyUser() item.display_name = "disp_name1" item.username = "******" item.save() url = '/user/login' data = { 'username': '******', } response = self.client.post(url, data, format='json') self.assertValidJSONResponse(response) token = response.data['token'] url_submit = '/score/submit' data_submit = { 'points': 4, } auth = 'JWT {0}'.format(token) resp = self.api_client.post(url_submit,data=data_submit, HTTP_AUTHORIZATION=auth, format='json') self.assertValidJSONResponse(resp) data_submit_2 = { 'points': 5, } resp = self.api_client.post(url_submit, data=data_submit_2, HTTP_AUTHORIZATION=auth, format='json') self.assertValidJSONResponse(resp) record = MyUser.objects.get(display_name='disp_name1') self.assertEqual(9, record.points)
def create(email, password): if User.objects.filter(username=email).exists(): raise UserAlreadyExist with transaction.atomic(): auth_user = User.objects.create_user(username=email, password=password) my_user = MyUser() my_user.auth_user = auth_user my_user.email = email my_user.display_name = email my_user.api_key = generate_token(40) my_user.save() return my_user
def test_fields(self): item = MyUser() item.display_name = "disp_name" item.username = "******" item.save() record = MyUser.objects.get(display_name='disp_name') self.assertEqual(item, record) url = '/user/login' data = { 'username': '******', } response = self.client.post(url, data, format='json') self.assertValidJSONResponse(response) token = response.data['token'] auth = 'JWT {0}'.format(token) resp = self.api_client.get('/user/profile', HTTP_AUTHORIZATION=auth, format='json') self.assertValidJSONResponse(resp)
def post(self, request): data = json.loads(request.body.decode('utf-8')) email = data['email'] if not MyUser.objects.filter(email=email).exists(): new_user = MyUser() new_user.first_name = data['firstname'] new_user.last_name = data['lastname'] new_user.username = data['username'] new_user.email = data['email'] new_user.set_password(data['password1']) new_user.birthday = data['birthday'] new_user.gender = data['gender'] new_user.is_active = 0 new_user.save() new_user = MyUser.objects.filter(username=data['username']) if new_user: mail_content = "Hello" mail_title = "Welcome to Shili!" one_time_pad = MaHoaOneTimePad() result = one_time_pad.ma_hoa(email) domain = request.scheme + '://' + request.META['HTTP_HOST'] url = domain + '/xacthuc/' + result[0] + '/' + result[1] content = "Nhấp vào đây để Xác thực tài khoản của bạn" theme = ShiliEmail() msg_html = theme.form_mail(url, content, email) send_mail(mail_title, mail_content, "PLC", [email], html_message=msg_html, fail_silently=False) return HttpResponse( 'Đăng kí thành công tài khoản. Kiểm tra email để nhận liên kết kích hoạt tài khoản') else: return HttpResponse('Có lỗi xảy ra! Vui lòng thử lại')
def setUp(self): user_a = MyUser()
import os import django os.environ.setdefault("DJANGO_SETTINGS_MODULE", "TikTok.settings") django.setup() from problems.models import Group from user.models import MyUser from django.utils import timezone from django.contrib.auth.models import User if __name__ == "__main__": x = Group(name=u"Główny zbiór zadań", shortname="MAIN", pub_date=timezone.now()) x.save() admin = MyUser(user=User.objects.all()[0]) admin.save()
def has_permission(self, request, view): user = request.user return request.user and MyUser.is_worker( user) and user.worker.is_active
def post(self, request): password1 = request.POST.get('password1') password2 = request.POST.get('password2') new_user = MyUser() new_user.first_name = request.POST.get('first_name') new_user.last_name = request.POST.get('last_name') new_user.username = request.POST.get('username') new_user.email = request.POST.get('email') new_user.email = request.POST.get('email') new_user.birthday = request.POST.get('birthday') new_user.gender = request.POST.get('gender') password = { 'password1': password1, 'password2': password2, } err = [] x = True if MyUser.objects.filter(username=new_user.username): x = x and False err.append('Username này đã tồn tại trong hệ thống, xin thử lại') if MyUser.objects.filter(email=new_user.email): x = x and False err.append( 'Địa chỉ email đã tồn tại trong hệ thống, Hãy check email khác' ) if not x: return render( request, 'home/index.html', { 'newuser': new_user, 'password': password, 'themes': 'register', 'err': err }) else: email = new_user.email new_user.set_password(password1) new_user.is_active = 0 new_user.save() one_time_pad = MaHoaOneTimePad() result = one_time_pad.ma_hoa(email) domain = request.scheme + '://' + request.META['HTTP_HOST'] url = domain + '/xacthuc/' + result[0] + '/' + result[1] content = "We're excited to have you get started. First, you need to confirm your account. Just press the button below." theme = ShiliEmail() msg_html = theme.form_mail(url, content, email) send_mail("Welcome to Shili!", "Hello", "PLC", [email], html_message=msg_html, fail_silently=False) err.append( 'Đăng kí thành công tài khoản. Kiểm tra email để nhận liên kết kích hoạt tài khoản' ) # return render(request, 'home/index.html', {'themes': 'register', 'err': err}) return redirect('home:test')