Hướng dẫn Django cho người mới bắt đầu (P3)

Tiếp nối với phần 2 trước đó, mình sẽ tiếp tục hướng dẫn các bạn tạo ứng dụng trên Django.

API:

Trước tiên sẽ tương tác với API thông qua python:

    python manage.py shell
Sau khi mở shell bạn tiếp tục thực hiện các câu lệnh dưới đây:

    >>> from polls.models import Choice, Question  # truyền vào các models chúng ta vừa viết.
    >>> Question.objects.all() # Kiểm tra không có câu hỏi nào trong hệ thống.
    <QuerySet []>

    # Đến với quá trình tạo câu hỏi.
    # Hỗ trở giờ sẽ bật trong tệp cài đặt mặc định. Ở Django sẽ sử dụng .timezone.now() thay cho datetime.datetime.now().
    >>> from django.utils import timezone
    >>> q = Question(question_text="alo?", pub_date=timezone.now())

    # Lưu câu hỏi vào database với save(). 
    >>> q.save()

    # Sẽ có một id cho đối tượng bạn vừa tạo.
    >>> q.id
    1

    #Truy cập vào giá trị các models thông qua các thuộc tính của python.
    >>> q.question_text
    "alo?"
    >>> q.pub_date
    datetime.datetime(2012, 2, 26, 13, 0, 0, 775217, tzinfo=<UTC>)

    # Muốn thay đổi giá trị thông qua các thuộc tính thì gọi phải gọi save().
    >>> q.question_text = "hey?"
    >>> q.save()

    #Hiển thị các câu hỏi trong database
    >>> Question.objects.all()
    <QuerySet [<Question: Question object (1)>]>
Thực hiện chỉnh sửa trong polls/models.py để thêm phương thức Question và Choice, đồng thờ thêm múi giờ của Django tương ứng:
    from django.db import models

    class Question(models.Model):
        # ...
        def was_published_recently(self):
            return self.pub_date >= timezone.now() - datetime.timedelta(days=1)

    class Choice(models.Model):
        # ...
        def __str__(self):
            return self.choice_text

Tiếp theo ta lại quay về với python manage.py shell:

    >>> from polls.models import Choice, Question

    #Đảm bảo phần bổ sung __str__() đã hoạt động.
    >>> Question.objects.all()
    <QuerySet [<Question: alo?>]>

    # Ở Django cung cấp một API dùng ta cứu trong database.
    >>> Question.objects.filter(id=1)
    <QuerySet [<Question: alo?>]>
    >>> Question.objects.filter(question_text__startswith='alo')
    <QuerySet [<Question: alo?>]>

    #Nhận được thời gian câu hỏi được hiện ra.
    >>> from django.utils import timezone
    >>> current_year = timezone.now().year
    >>> Question.objects.get(pub_date__year=current_year)
    <Question: alo?>

    # Yêu cầu id = 2 không hợp pháp.
    >>> Question.objects.get(id=2)
    Traceback (most recent call last):
    ...
    DoesNotExist: Question matching query does not exist.

    #Tra cứu khoá chính là việc phổ biến nên ở Django cung cấp phím tắt để tra cứu
    #chính xác thông qua khoá chính
    >>> Question.objects.get(pk=1)
    <Question: alo?>

    #Đảm bảo rằng việc chỉnh sửa xảy ra
    >>> q = Question.objects.get(pk=1)
    >>> q.was_published_recently()
    True

    # Cung cấp một vài Question và Choice.
    # Thực hiện lệnh gọi Question và câu lệnh INSERT để thêm Choice vào tập hợp
    >>> q = Question.objects.get(pk=1)

    # Hiển thị các lựa chọn - hiện tại không có lựa chọn nào
    >>> q.choice_set.all()
    <QuerySet []>

    # Tạo các lựa chọn.
    >>> q.choice_set.create(choice_text='Not much', votes=0)
    <Choice: Not much>
    >>> q.choice_set.create(choice_text='The sky', votes=0)
    <Choice: The sky>
    >>> c = q.choice_set.create(choice_text='Just hacking again', votes=0)

    # Đối tượng Choice có quyền truy cập vào các đối tượng Question liên quan với chúng.
    >>> c.question
    <Question: alo?>

    #Các đối tượng Question cũng có thể truy cập vào các đối tượng Choice.
    >>> q.choice_set.all()
    <QuerySet [<Choice: Not much>, <Choice: The sky>, <Choice: Just hacking again>]>
    >>> q.choice_set.count()
    3

    # Các API sẽ tự động theo dõi các rằng buộc, mối quan hệ.
    # Sử dụng dấu gạch kép dưới để phân tách cách quan hệ.
    >>> Choice.objects.filter(question__pub_date__year=current_year)
    <QuerySet [<Choice: Not much>, <Choice: The sky>, <Choice: Just hacking again>]>

    #Thực hiện xoá một trong các lựa chọn
    >>> c = q.choice_set.filter(choice_text__startswith='Just hacking')
    >>> c.delete()

Tạo người dùng:

Trước tiên, để tạo người dùng có quyền quản lý cần chạy lệnh sau:

    python manage.py createsuperuser
Nhập tên người dùng tuỳ theo ý thích và email của bạn:
    Username: vietdev
    Email address: [email protected]
Tiếp đến là nhập mật khẩu:
    Password:*********
    Password (again):*********
    Superuser created successfully.

Khởi động máy chủ:

Để khởi động máy chủ ta cần lệnh:

    python manage.py runserver
Sau khi thực hiện lệnh trên, bạn hãy truy cập vào: http://127.0.0.1:8000/admin/ và dùng tài khoản, mất khẩu vừa tạo khi nãy.

Vào trang quản trị:

< Bây giờ, hãy thử đăng nhập bằng tài khoản superuser mà bạn đã tạo ở bước trước. Bạn sẽ thấy trang chỉ mục quản trị Django: một số loại nội dung có thể chỉnh sửa: nhóm và người dùng.

Để làm cho ứng dụng có thể sửa đổi được trong quản trị viên thì bạn hay chỉnh sửa polls/admin.py:

    from django.contrib import admin

    from .models import Question

    admin.site.register(Question)
Các bạn xem lại phần 2 tại: Hướng dẫn Django cho người mới bắt đầu (P2)
Nguồn: django tutorial

Công nghệ được nhắc đến trong bài viết này

Tên Công NghệPhiên BảnPhát Hành
Django---
5 phút đọc·537 lượt xem·