วันอาทิตย์ที่ 11 มิถุนายน พ.ศ. 2560

Building Software II : Schedule app commit 11/6/2560

http://a5810164.pythonanywhere.com/schedule/
https://github.com/poklonas/schedule

--------------------------------------------------------------------------------------------------

Commit

การปรับขนาดของปุ่มยืนยัน - ประกอบด้วยส่วนที่เพิ่มเพื่อใช้ในการกำหนดขนาด และ ตำแหน่งของปุ่มยืนยันการเพิ่ม activity , yes, no และการปรับขนาดของช่อง ที่ใช้ในการแสดงบอก ผู้ใช้งานว่า กำลังจะเพิ่ม ข้อมูล activity อะไร

เตรียมการทำ ช่องสำหรับสมัคร user ใหม่ และ เปลี่ยน ข้อความแสดงด้านบน ใหม่ เป็น LOGIN  - เพิ่ม ช่อง input สำหรับ การใส่ email password และเปลี่ยนข้อความต้อนรับเป็น LOGIN
<input class="form-control" id="new_email" type="text" name="email" placeholder="user email" required>
<input class="form-control" id="new_pass" type="text" name="password" placeholder="user password" required>
ส่วนที่เพิ่มช่อง input และนอกจากนี้ยังมี การเตรียมการรับ ตัวแปรที่เป็น error massge อีกด้วย

เปลี่ยนจากการแสดงรายชื่อทั้งหมดเป็นช่อง input ไว้ให้ LOGIN ด้วยใช้ email , password  - นอกจากนี้ยังมีการเพิ่มส่วนที่ใช้ในการกำหนดว่าต้อง Login ก่อนถึงจะใช้ฟังก์ชั่นนี้ใน view ได้ซึ่งจะช่วยให้สามารถกรอง มีการ login หรือไม่ แต่ยังไม่ได้ทำงานอย่างถูกต้อง
@login_required(login_url='/')
เพิ่มส่วนนี้ขึ้นไปที่หัวฟังก์ชั่น ก็จะทำให้จำเป็นต้อง login ก่อนไม่อย่างนั้นจะทำการไปที่ ลิงค์ '/' แทน

เพิ่ม block สำหรับการสมัคร user ใหม่ จากตอนแรกไม่มี เป็นแค่ที่โล่งๆมี input ตอนนี้จะอยู่ใน block

แยกฟังก์ชั่นการสร้าง user ออกจากของเก่าที่รวมกันเงื่อนไขเพื่อแสดงผลหน้าเว็ป และสร้าง url สำหรับการสร้าง user ขึ้นมา - ปรับเปลี่ยน input type ในช่อง กรอก password จาก text เป็น password แทนเพื่อไม่ให้แสดงผลตัวอักษร สร้างฟังก์ชั่น create_user ขึ้นมาทำงานแยกกับฟังก์ชั่น home_page เพื่อเตรียมที่จะใช้ home_page post เพื่อเช็ค login แทน
url(r'^create_user$', views.create_user, name='create_user'),

เพิ่ม ให้ model user เก็บ email ได้ และเปลี่ยน input type ในช่องกรอก email จาก text > email  - ข้างล่างเป็นตัวอย่างการเปลี่ยนชนิด input และการเพิ่มให้ model เก็บค่า mail ได้
mail = models.EmailField(default="")
<input class="form-control" id="login_email" type="text" name="login_email" placeholder="user email"
required style="width:50%;height:7%">
<input class="form-control" id="login_email" type="email" name="login_email" placeholder="user email"
required style="width:50%;height:7%">

เช็คว่า user ที่ต้องการสมัครเพิ่มนั้น email ได้เคยถูกใช้มั้ยถ้าเคยจะ ส่ง error บอกและไม่ทำการสมัครใหม่ให้  - หลังจากเช็คโดยใช้ try - except โดยพยายาม จะ ดึงหาข้อมูลจาก model ที่มี email ที่ต้่องการ ถ้าไม่มีก็จะ return ด้านล่าง แต่ถ้ามัน except ก็คือมันไม่มี ก็จะเตรียมการสร้างเพิ่ม(commit นี้ยังไม่ได้ทำเพียงแต่เตรียมให้ error เวลา เจอ email ซ้ำไว้แล้ว)
return render(request, 'schedule/homepage.html', {'error_messege_new_user':"That email was alerdy used"})

เพิ่ม ระบบ login สามารถ LOGIN ได้แล้ว - โดยใช้
user = authenticate(username=user_name, password=password)
ในการ หา USER ที่ตรง
if user is not None:
ถ้าเจอ user ที่ user,pass ตรงกัน
login(request, user)
ก็ให้ login แล้ว
return redirect(reverse('schedule:user_page', kwargs={'user_id':user_pk}))
ไปที่หน้า user page ได้เลย

เพิ่มระบบ LOGOUT - เพิ่ม url logout
logout(request)
คำสั่งสำหรับ logout

เพิ่มเงื่อนไขที่ว่าหากว่า login แล้วเข้าหน้า หลัก ระบบจะทำการ ไปที่ หน้า logout
if request.user.is_authenticated:
return render(request, 'schedule/logoutpage.html')

เพิ่มส่วนที่ใช้ในการเช็คว่า ถ้าหากว่า user login แล้วเข้าไปที่หนัง userpage ของ id อื่นระบบจะเข้าไปที่หน้า logout แทน และปรับให้เมื่อ login อยู่เข้าหน้าหลักจะย้ายไปที่หน้า userpage ของตนเองแทน - เช่น
if(check_email_login(request, user.mail)):
return render(request, 'schedule/userpage.html', {'user': user})
else:
return render(request, 'schedule/logoutpage.html')

ถ้า login email != user.mail จะขึ้นหน้า logout ส่วนถ้าตรงก็ทำอะไรก็ตาม ตามเงื่อนไขฟังก์ชั่นเดิมที่ควรจะทำ เช่นแสดงผลหน้า userpage

แก้ไขคำแนะนำวิธีการใช้งาน app ให้ถูกต้อง - เปลี่ยนรูปภาพเป็นต้น


--------------------------------------------------------------------------------------------------
ภาพการใช้งานคร่าวๆล่าสุด
mail- admin@hotmail.com
pass- 123456

(เมลและพาสสำหรับผู้ต้องการทำลองโดยไม่ต้องการสร้าง user ใหม่เอง)

หน้าหลัก


ช่องสำหรับกรอกข้อมูลเพื่อสร้าง user 
(และตัวอย่างเมื่อใช้เมลที่เคยใช้ไปแล้ว)


ช่องสำหรับกรอกข้อมูลเพื่อ login
(ตัวอย่างเมื่อกรอก email หรือ password ผิด)


ตัวอย่างคำแนะนำวิธีการใช้งาน


ปุ่ม logout ที่หน้า userpage
(หาก login แล้วเข้าหน้าหลักจะเข้าหน้า userpage)


หากเปลี่ยน url ไปเป็นของ user คนอื่นจะเข้าหน้า logout ซึ่งจากภาพ คือ schedule/2 ซึ่งเรา login ที่ schedule/3 จึงเข้าหน้า logout แทน

ไม่มีความคิดเห็น:

แสดงความคิดเห็น