Lập Trình Web Với Django Python Là Gì ? (Cập Nhập Django Là Gì

Giới thiệu Django

Django là 1 web framework khá nổi tiếng được viết hoàn toàn bằng ngôn ngữ Python.

Bạn đang xem: Django python là gì

Nó là 1 framework với đầu đủ các thư viện, module hỗ trợ các web-developer. Django sử dụng mô hình MVC và được phát triển bởi Django Software Foundation (DSF một tổ chức phi lợi nhuận độc lập)Mục tiêu chính của Django là đơn giản hóa việc tạo các website phức tạp có sử dụng cơ sở dữ liệu. Django tập trung vào tính năng “có thể tái sử dụng” và “có thể tự chạy” của các component, tính năng phát triển nhanh, không làm lại những gì đã làm. Một số website phổ biến được xây dựng từ Django là Pinterest, Instagram, Mozilla, và Bitbucket.Cài đặt DjangoBắt đầu với Django

Project

Tạo ProjectDjango cung cấp 1 câu lệnh để render ra 1 template với cấu trúc hoàn chỉnh django-admin startproject demo_djangonote: không đặt têt project là “django” và “test” và không đặt code trong /var/www Django sẽ trách đặt code ở các folder root.Dùng sublime để mở project đã tạo và cùng xem cấu trúc:*

Nó là 1 framework với đầu đủ các thư viện, module hỗ trợ các web-developer. Django sử dụng mô hình MVC và được phát triển bởi Django Software Foundation (DSF một tổ chức phi lợi nhuận độc lập)Mục tiêu chính của Django là đơn giản hóa việc tạo các website phức tạp có sử dụng cơ sở dữ liệu. Django tập trung vào tính năng “có thể tái sử dụng” và “có thể tự chạy” của các component, tính năng phát triển nhanh, không làm lại những gì đã làm. Một số website phổ biến được xây dựng từ Django là Pinterest, Instagram, Mozilla, và Bitbucket.Cài đặt DjangoBắt đầu với DjangoTạo ProjectDjango cung cấp 1 câu lệnh để render ra 1 template với cấu trúc hoàn chỉnh django-admin startproject demo_djangonote: không đặt têt project là “django” và “test” và không đặt code trong /var/www Django sẽ trách đặt code ở các folder root.Dùng sublime để mở project đã tạo và cùng xem cấu trúc:Chúng ta thấy folder ngoài demo_django không liên quan gì tới code nên bạn có thể thay đổi tùy ýdemo_django/__init__.py là 1 file rỗng chỉ định việc cái đường dẫn folder này sẽ được xem như là 1 Python package.demo_django/settings.py là file chứa các settings của projectDEBUG: DEBUG = True bật/tăt chế độ debugALLOWED_HOSTS:ALLOWED_HOSTS = <> nếu báo lỗi liên quan đến ALLOWED_HOSTS thì thêm địa chỉ vào list này.INSTALLED_APPS: 1 project có thể có nhiều app, còn 1 app có thể thuộc nhiều project. Khi mình thêm 1 app mới thì cần cập nhật danh sách này.

Xem thêm: Nghĩa Của Từ Ill Là Gì – Ill Nghĩa Là Gì Trong Tiếng Anh

Đơn giản là nó chứa tất cả các app có thể dử dụng thanfhg instance của Django

Đơn giản là nó chứa tất cả các app có thể dử dụng thanfhg instance của Django

django.contrib.admin – Site admindjango.contrib.auth – An authentication system. Hệ thống authenticationdjango.contrib.contenttypes – Hệ thống content typesdjango.contrib.sessions – Hệ thống sessiondjango.contrib.messages – Hệ thống messagedjango.contrib.staticfiles – Hệ thống quản lý các file staticDATABASES: đặt tả Database muốn dùng : SQLite(default), Postgres, Mysql,…demo_django/urls.py là file khai báo các URL của project (kiểu như routing, với địa chỉ nào thì sẽ thực thi hàm nào)demo_django/wsgi.py là file dùng deploy project lên servermanage.py là file để tạo app, migrate,…chạy server trên local

App

Tạo Appcấu trúc của app*

Tạo Appcấu trúc của appThêm app vào trong demo_django/settings.pyINSTALLED_APPS = < ….. `book`, >Tạo ModelDjango hỗ trợ ORM (object relational mapping) nói 1 cách dễ hiểu, là 1 class hướng đối tượng sẽ được map thành 1 bảng trong database, 1 object / instance (thực thể của 1 class) sẽ được map thành 1 record (1 dòng) của bảng trong database.Trong Book application ra thiết kế đơn giản :Category model có field name,

Book model có field name, price, category, author_name

from django.db import models # Create your models here.class Category(models.Model): name = models.CharField(max_length=200) def __str__(self): return self.nameclass Book(models.Model): name = models.CharField(max_length=200) price = models.IntegerField(default=0) category = models.ForeignKey(Category, on_delete=models.CASCADE) author_name = models.CharField(max_length=200) def __str__(self): return self.nameVới việc khai báo như trên Django sẽ tạo 1 schema DB cho app và tạo API Python để truy cập Category và Book”Note: Bạn thấy hàm __str__() được khai báo trong class nó tương tự như method toString trong Java với object. Ở đây bạn có thể override nó trong class ở Python giúp bạn hiển thị friendly name trong object. Mình sẽ nói cụ thể ở phần Shell Python ở dướiNếu không3, Làm quen với migrateTạo migration với câu lệnh python manage.py makemigrations bookMigrations for “book”:0001_initial.py: – Create model Category – Create model Book – Add field category to bookBằng việc chạy makemigrations, Django sẽ hiểu là bạn đang tạo 1 sự thay đổi đến Model (trong trường này bạn đang create new) và sự thay đổi này sẽ được lưu như 1 migration.sau khi chạy xong sẽ tạo ra file book/migrations/0001_initial.pyNếu ra chỉnh sửa cấu trức của database thì lần makemigrations sẽ tạo ra file dạng 0002_……pyKiểm tra câu lệnh mysql, quản lý db schema hoặc dễ hiểu hơn là phần prefix của file: 0001_initial.pypython manage.py sqlmigrate book 0001BEGIN;CREATE TABLE “book_book” (“id” integer NOT NULL PRIMARY KEY AUTOINCREMENT, “name” varchar(200) NOT NULL, “price” integer NOT NULL, “author_name” varchar(200) NOT NULL);CREATE TABLE “book_category” (“id” integer NOT NULL PRIMARY KEY AUTOINCREMENT, “name” varchar(200) NOT NULL);CREATE TABLE “book_book__new” (“id” integer NOT NULL PRIMARY KEY AUTOINCREMENT, “name” varchar(200) NOT NULL, “price” integer NOT NULL, “author_name” varchar(200) NOT NULL, “category_id” integer NOT NULL REFERENCES “book_category” (“id”));INSERT INTO “book_book__new” (“category_id”, “price”, “id”, “author_name”, “name”) SELECT NULL, “price”, “id”, “author_name”, “name” FROM “book_book”;DROP TABLE “book_book”;ALTER TABLE “book_book__new” RENAME TO “book_book”;CREATE INDEX “book_book_2d5f8f90” ON “book_book” (“category_id”);COMMITỞ đây có thể sẽ check format output , tên table, primary key,… xem đã chính xác chưa.Nếu tất cả đã ok bạn có thể merge vào migrate để tạo table vào data basepython manage.py migrateCơ chế hoạt động của migrate là sẽ lấy tất cả những migration chưa đc apply và chạy lại trong db đảm bảo dữ liệu trong db không bị xóa.Kết luận :makemigrations : tạo migrations cho những thay đổisqlmigrate: check sql trước khi applymigrate: apply vào những thay đổi vào dbNote: Bạn có thể sử dụng 1 câu lệnh duy nhất python manage.py makemigrations && python manage.py migrate

Shell Python

Như rails có rails c thì để truy cập vào shell python chúng ta chạy lệnh command python manage.py shellImport những class mà mình mới khai báofrom book.models import Book, CategoryHiển thị tất cả số record trong tableCategory.objects.all()tạo record mớic= Category(name=”Romatic”)c.save()b = Book(category_id=1, name=”ABC”, price=”123″, author_name=”Minh”)b.saveNhư đã nói ở phần tạo model về hàm __str__()Category.objects.all()Khi sử dụng kết quả trả ra là : <>Khi không sử dụng kết quả trả ra là: <>FilterCategory.objects.filter(id=1)Category.objects.filter(name=”Romatic”)Book.objects.filter(category__name=”Romatic”)Thao tác với foreign keyc = Category.objects.get(pk=1)Note: Các bạn có thể tạo Book theo cách t2:b = c.book_set.create(name=”ABC”, price=”123″, author_name=”Minh”)từ Book truy cập tới Categoryb.category , b.category.nametừ Category truy cập tới Bookc.book_set.all(), c.book_set.all()<0>.name, c.book_set.all().count,….Xóa recordb.delete()Kết

Như rails có rails c thì để truy cập vào shell python chúng ta chạy lệnh command python manage.py shellImport những class mà mình mới khai báofrom book.models import Book, CategoryHiển thị tất cả số record trong tableCategory.objects.all()tạo record mớic= Category(name=”Romatic”)c.save()b = Book(category_id=1, name=”ABC”, price=”123″, author_name=”Minh”)b.saveNhư đã nói ở phần tạo model về hàm __str__()Category.objects.all()Khi sử dụng kết quả trả ra là : <>Khi không sử dụng kết quả trả ra là: <>FilterCategory.objects.filter(id=1)Category.objects.filter(name=”Romatic”)Book.objects.filter(category__name=”Romatic”)Thao tác với foreign keyc = Category.objects.get(pk=1)Note: Các bạn có thể tạo Book theo cách t2:b = c.book_set.create(name=”ABC”, price=”123″, author_name=”Minh”)từ Book truy cập tới Categoryb.category , b.category.nametừ Category truy cập tới Bookc.book_set.all(), c.book_set.all()<0>.name, c.book_set.all().count,….Xóa recordb.delete()Kết

Mới tìm hiểu về Python nên mình cũng chỉ đưa ra được những kiến thức cơ bản nhất có tronghttps://docs.djangoproject.com/en/1.7/intro/tutorial01/https://www.djangoproject.com/start/https://www.digitalocean.com/community/tutorials/how-to-install-the-django-web-framework-on-ubuntu-14-04