{{bài đăng. title}}
Được đăng trên {{post.timestamp}} bởi {{post.author}}
{{post.bodytext}}
Bạn bắt đầu tạo trang web bằng Python như thế nào? Chà, bạn có thể tự mình làm tất cả và viết một chương trình chạy trên máy chủ web, chấp nhận các yêu cầu trang và gửi phản hồi dưới dạng HTML và các tài nguyên khác. Tuy nhiên, đó là rất nhiều công việc, vậy tại sao lại gặp rắc rối khi có rất nhiều công cụ hiện có để thực hiện công việc cho bạn? Những công cụ này được gọi là khuôn khổ và chúng là những gì chúng tôi sẽ sử dụng ngày hôm nay để tạo trang web của mình.
Có khá nhiều khung công tác web Python, nhưng đây là một số khung công tác tốt nhất:
Bạn có thể tìm thấy danh sách toàn diện hơn trên trang web Python nếu bạn cần các tùy chọn bổ sung. Hôm nay chúng ta sẽ thiết lập Django để phát triển trên máy cục bộ, sau đó xây dựng một blog đơn giản. Chúng tôi cũng sẽ xem xét quá trình cài đặt nó trên một máy chủ web từ xa.
Hôm nay chúng tôi sẽ thực hiện hầu hết công việc của mình ở nhà ga. Tất cả điều này sẽ hoạt động trên Mac và Linux; tuy nhiên, nếu bạn đang chạy Windows, quá trình này hơi khác. Việc làm quen với dòng lệnh là không cần thiết nếu bạn chỉ viết Python, mặc dù nếu bạn đang có kế hoạch sử dụng Django hoặc chạy một trang web động nói chung, điều đó đáng học hỏi.
Hãy xem xét các hướng dẫn này để bắt đầu và sử dụng Terminal:
Dưới đây là các lệnh bạn cần để cài đặt Django. Bạn sẽ cần cài đặt phiên bản Python 3 để chạy. Trước tiên, bạn cần tạo một môi trường ảo với venv
mô-đun. Từ tài liệu Python:
venv
mô-đun cung cấp hỗ trợ để tạo “môi trường ảo” nhẹ với các thư mục trang web của riêng chúng, được cách ly tùy chọn khỏi các thư mục trang web hệ thống. Mỗi môi trường ảo có tệp nhị phân Python của riêng nó (khớp với phiên bản nhị phân được sử dụng để tạo môi trường này) và có thể có tập hợp các gói Python đã cài đặt độc lập trong thư mục trang web của nó.
Tạo thư mục dự án và môi trường ảo bên trong thư mục dự án.
mkdir Django_projectscd Django_projectspython3,8 -m venv env
Kích hoạt môi trường ảo và tạo một dự án Django mới.
source env / bin / activejango-admin.py startproject FirstBlog
Thư mục dự án trông giống như sau:
Mỗi tệp này làm gì?
Tuy nhiên, không có tệp nào trong số này tự tạo ra một trang web chức năng. Để làm được điều đó, chúng tôi cần các ứng dụng. Ứng dụng là nơi bạn viết mã giúp trang web của bạn hoạt động, nhưng trước khi xem xét chúng, chúng ta cần hiểu một chút về các nguyên tắc thiết kế của Django.
Đầu tiên, Django là một khung công tác MVC, viết tắt của Model View Controller. Django tự coi mình là một khuôn khổ MTV, viết tắt của Model Template View. Đó là một cách tiếp cận hơi khác so với MVC, nhưng về cơ bản, chúng khá giống nhau. Nhưng dù sao đi nữa, MVC là một mẫu kiến trúc cung cấp một phương pháp để cấu trúc các dự án của bạn. Nó tách mã được sử dụng để xử lý dữ liệu khỏi mã quản lý giao diện người dùng.
Thứ hai, Django đăng ký triết lý KHÔ, hoặc Không lặp lại bản thân, có nghĩa là bạn không bao giờ nên viết mã thực hiện một nhiệm vụ nhất định nhiều lần. Ví dụ:trong blog của chúng tôi, nếu chúng tôi viết một tính năng chọn một bài báo ngẫu nhiên từ kho lưu trữ và triển khai tính năng này trên nhiều trang, chúng tôi sẽ không viết mã lại mỗi khi cần. Chúng tôi sẽ mã hóa nó một lần và sau đó sử dụng nó trên mỗi trang.
Vậy điều này liên quan như thế nào đến các ứng dụng? Chà, các ứng dụng cho phép bạn viết trang web của mình theo phong cách KHÔ. Mỗi dự án, giống như dự án chúng tôi có ở đây, có thể chứa nhiều ứng dụng. Ngược lại, mỗi ứng dụng có thể là một phần của nhiều dự án. Sử dụng ví dụ trước đó, điều này có nghĩa là nếu chúng tôi tạo một trang web khác trong tương lai cũng cần tính năng trang ngẫu nhiên, chúng tôi sẽ không phải viết lại tất cả. Chúng tôi chỉ cần nhập ứng dụng từ dự án này.
Do đó, điều quan trọng là mỗi ứng dụng phải phục vụ một mục đích riêng biệt. Nếu bạn viết tất cả các chức năng của trang web của mình trong một ứng dụng và sau đó bạn cần sử dụng lại một phần của nó sau này, bạn phải nhập tất cả. Ví dụ:nếu bạn đang tạo một trang web Thương mại điện tử, bạn sẽ không muốn nhập tất cả các tính năng của blog. Tuy nhiên, nếu bạn tạo một ứng dụng cho tính năng ngẫu nhiên và một ứng dụng cho hệ thống xuất bản blog, bạn có thể chọn và chọn các bit mà bạn yêu cầu.
Điều này cũng có nghĩa là trong trang web, mã được tổ chức tốt. Nếu bạn muốn thay đổi một tính năng, bạn không cần phải tìm kiếm trong một tệp lớn; thay vào đó, bạn có thể duyệt đến ứng dụng có liên quan và thay đổi ứng dụng đó mà không phải lo lắng về việc can thiệp vào bất kỳ điều gì khác.
python3.8 management.py blog startapp
Cấu trúc thư mục bây giờ trông giống như sau:
Một lần nữa, chúng tôi có một __init__.py
để biến nó thành một gói và ba tệp khác:mô hình, thử nghiệm và chế độ xem. Bây giờ chúng ta không cần phải lo lắng về các bài kiểm tra, nhưng hai bài kiểm tra còn lại rất quan trọng. Mô hình và Chế độ xem là M
và V
các phần của MVC.
Trong các mô hình, chúng tôi xác định cấu trúc dữ liệu của mình.
Nếu bạn đã từng làm việc với PHP trước đây, bạn có thể đã sử dụng PhpMyAdmin để tạo các bảng MySQL và sau đó viết các truy vấn SQL của bạn theo cách thủ công trong các tập lệnh PHP của bạn. Ở Django, điều đó dễ dàng hơn nhiều. Chúng tôi xác định tất cả các cấu trúc dữ liệu chúng tôi cần trong tệp mô hình này, sau đó chạy lệnh và tất cả các cơ sở dữ liệu cần thiết được tạo cho chúng tôi.
Khi bạn muốn truy cập dữ liệu đó, bạn đi qua các mô hình này bằng cách gọi một phương thức trên chúng, thay vì chạy các truy vấn thô. Điều này rất hữu ích vì Django có thể sử dụng một số chương trình cơ sở dữ liệu. Chúng tôi sẽ sử dụng MySQL hôm nay vì nó mạnh nhất và là thứ mà hầu hết các máy chủ cung cấp, nhưng nếu chúng tôi cần chuyển sang một cơ sở dữ liệu khác trong tương lai, tất cả mã sẽ vẫn hợp lệ! Trong các ngôn ngữ khác, nếu bạn muốn chuyển sang SQLite hoặc thứ gì đó tương tự, bạn cần phải viết lại mã truy cập cơ sở dữ liệu của mình.
Trong tệp chế độ xem, chúng tôi viết mã thực sự tạo ra các trang web. Điều này liên kết tất cả các bộ phận khác với nhau. Khi người dùng nhập URL, URL đó sẽ được gửi bởi các urls
tập lệnh mà chúng ta đã thấy trước đó đối với views
script, sau đó lấy dữ liệu có liên quan từ các mô hình, xử lý nó và chuyển nó vào một mẫu, cuối cùng sẽ được phục vụ như trang mà người dùng nhìn thấy. Chúng ta sẽ xem xét các mẫu đó ngay sau đây. Chúng là phần dễ nhất — chủ yếu là HTML.
Thêm ứng dụng blog vào danh sách INSTALLED_APPS
trong settings.py tệp.
INSTALLED_APPS =['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib .staticfiles ',' blog ',]
Đối với blog, chúng ta sẽ cần một bảng các bài đăng, với một số trường cho tiêu đề, nội dung, tác giả, thời gian nó được viết, v.v. Một blog thực sự sẽ có nhận xét, nhưng điều đó nằm ngoài phạm vi của bản trình diễn hôm nay.
từ django.db nhập các bài đăng của lớp mô hình (mô hình.Model):tác giả =mô hình.CharField (max_length =30) tiêu đề =mô hình.CharField (max_length =100) bodytext =mô hình.TextField () timestamp =mô hình.DateTimeField ()
Những mô hình này chỉ là một mô tả. Chúng ta cần tạo một cơ sở dữ liệu thực tế từ chúng. Tuy nhiên, trước tiên, chúng tôi cần MySQL chạy trên hệ thống của chúng tôi. Trên một máy chủ web thực tế, điều này sẽ không thành vấn đề, vì chúng thường được cài đặt sẵn.
Để cài đặt MySQL, hãy nhập:
sudo apt install mysql-server
Để kiểm tra xem cài đặt có thành công hay không, hãy sử dụng:
mysql --version
Điều này sẽ trả về một cái gì đó như sau:
mysql Ver 14.14 Distrib 5.7.33, dành cho Linux (x86_64) sử dụng trình bao bọc EditLine
Bây giờ, hãy tạo cơ sở dữ liệu MySQL cho dự án Django. Chạy MySQL với sudo mysql
và tại dấu nhắc, hãy nhập:
TẠO CƠ SỞ DỮ LIỆU django_blog; TẠO NGƯỜI DÙNG 'django' @ 'localhost' ĐƯỢC XÁC ĐỊNH VỚI mysql_native_password THEO 'password'; CẤP TẤT CẢ TRÊN django_blog. * CHO 'django' @ 'localhost'; FLUSH PRIVILEGES;
Bây giờ bạn có thể chạy python3.8 manange.py runserver
trong tab mới để khởi động máy chủ phát triển.
Nhưng trước tiên, chúng ta cần cấu hình cài đặt cơ sở dữ liệu. Hãy xem qua settings.py
.
Trước tiên, bạn cần thay đổi cài đặt cơ sở dữ liệu.
DATABASES ={'default':{'ENGINE':'django.db.backends.mysql', # Thêm 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' hoặc 'oracle'. 'NAME':'django_blog', # Hoặc đường dẫn đến tệp cơ sở dữ liệu nếu sử dụng sqlite3. 'USER':'django_user', # Không được sử dụng với sqlite3. 'PASSWORD':'password', # Không được sử dụng với sqlite3. 'HOST':'', # Đặt thành chuỗi trống cho localhost. Không được sử dụng với sqlite3. 'PORT':'', # Đặt thành chuỗi trống cho mặc định. Không được sử dụng với sqlite3. }}
Bây giờ, hãy chạy máy chủ và truy cập 127.0.0.1:8000 trong trình duyệt web của bạn. Bạn sẽ thấy trang Django mặc định.
Bây giờ, hãy biến trang Django của chúng tôi thành một blog. Trước tiên, chúng ta cần sử dụng các mô hình của mình để tạo các bảng trong cơ sở dữ liệu bằng cách tạo quá trình di chuyển sau để thực hiện các thay đổi được thực hiện đối với các mô hình.
python3.8 management.py makemigrationsMigrations cho 'blog':blog / migrations / 0003_post.py - Tạo bài đăng mô hình
Bây giờ, hãy chạy quá trình di chuyển để tạo bảng trong cơ sở dữ liệu.
python3.8 management.py migrate
Bây giờ, bạn có thể tạo siêu người dùng để quản trị ứng dụng Django của mình.
python3.8 management.py createuperuser
Hãy thiết lập các URL cho ứng dụng trong urls.py tập tin. Chúng tôi sẽ đưa các URL của blog vào một tệp riêng biệt.
from django.contrib import adminfrom django.urls import path, includeurlpatterns =[path ('admin /', admin.site.urls), path ("", include ('blog.urls')),]Tạo Chế độ xem đầu tiên
Hãy tạo chế độ xem đầu tiên của chúng ta, chế độ này sẽ hiển thị một trang HTML đơn giản. Mở blog / views.py và thêm mã sau.
from django.shortcuts import renderfrom .models import Postdef home (request):return render ('index.html')Tạo mẫu xem
index.html này tệp chưa tồn tại. Django sẽ tự động tải các mẫu từ thư mục mẫu. Tạo một thư mục có tên là mẫu trong ứng dụng blog và bên trong nó, tạo một tệp có tên index.html . Thư mục thư mục sẽ giống như sau:
blog -templates -blog -index.htmlThêm mã sau vào index.html .
Blog đầu tiên Blog đầu tiên
Tiêu đề
Được tác giả đăng vào ngày
Nội dung văn bản
Bây giờ, chúng tôi sẽ tạo các URL blog của mình. Tạo tệp urls.py trong thư mục blog và viết đường dẫn URL để phục vụ trang chỉ mục.
từ đường dẫn nhập django.urls. import viewsurlpatterns =[path ('', views.home),]Bây giờ, nếu bạn điều hướng đến http://127.0.0.1:8000/home , bạn sẽ thấy trang sau được cập nhật với nội dung mới này.
Nhúng dữ liệu từ cơ sở dữ liệu
Bước tiếp theo là thêm nội dung động từ cơ sở dữ liệu. Để thực hiện điều này, Django có một ngôn ngữ tạo khuôn mẫu cho phép bạn nhúng các biến với dấu ngoặc nhọn. Thay đổi phần giữa của trang của bạn thành như thế này:
Blog đầu tiên
{{title}}
Được đăng vào {{date}} bởi {{author}}
{{body}}
Sau đó, chúng tôi có thể chuyển các giá trị vào các trình giữ chỗ có thể thay đổi này từ views.py bằng cách tạo từ điển các giá trị.
def home (request):content ={'title':'My First Post', 'author':'Giles', 'date':'18/09/2011', 'body':'Lorem ipsum dolor sit amet , consectetur adipiscing elit. Etiam cursus tempus dui, ut vulputate nisl eleifend eget. Aenean justo felis, dapibus quis vulputate tại, porta et dolor. Praesent enim libero, malesuada ne vestibulum vitae, fermentum ne ligula. Cây cúc đại đóa. Donec non sem justo. ',} Trả về kết xuất (request,' blog / index.html ', content)Lưu và làm mới, và bạn sẽ thấy rằng bạn hiện đang chuyển nội dung vào một mẫu từ tệp dạng xem của mình. Bước cuối cùng là lấy dữ liệu từ cơ sở dữ liệu của chúng tôi và chuyển dữ liệu đó vào. May mắn thay, chúng ta có thể làm điều này mà không cần truy vấn SQL bằng cách sử dụng các mô hình của Django. Truy cập blog / views.py và cập nhật mã để tìm nạp dữ liệu từ cơ sở dữ liệu.
def home (request):posts =Post.objects.all () [:10] return render (request, 'blog / index.html', {"posts":posts})Tiếp theo, cập nhật mẫu để truy cập dữ liệu này.
Blog đầu tiên
{% cho bài đăng trong các bài viết%}{{bài đăng. title}}
Được đăng trên {{post.timestamp}} bởi {{post.author}}
{{post.bodytext}}
{% endfor%}Tại đây, chúng tôi có thể truy cập tất cả dữ liệu trong bảng của mình trong views.py và sau đó chỉ chọn mười mục nhập đầu tiên. Chúng tôi chuyển dữ liệu này vào mẫu, lặp qua các mục nhập và hiển thị dữ liệu bằng HTML của trang web của chúng tôi.
Hệ thống quản trị của Django
Việc cuối cùng chúng ta cần làm hôm nay là xem lại hệ thống quản trị của Django. Đây là một tính năng thực sự mạnh mẽ của Django cho phép bạn quản lý trang web của mình mà không cần viết thêm bất kỳ mã nào, như bạn phải làm nếu bạn đang tạo một trang web từ đầu. Để cho phép quản trị viên kiểm soát
posts
của bạn bảng, chúng tôi sẽ đăng kýPost
của chúng tôi mô hình trong quản trị Django và thêm một số dữ liệu trong cơ sở dữ liệu. Mở blog / admin.py và thêm mã sau.from django.contrib import adminfrom .models import Post # Đăng ký mô hình của bạn tại đây.admin.site.register (Đăng)Giờ đây, bạn có thể thêm các mục blog mới bằng cách truy cập http://127.0.0.1:8000/admin/blog/post/.
Đó là tất cả những gì cần làm. Bạn vừa tạo một blog hoạt động đầy đủ, mặc dù đơn giản,. Để kết thúc bài học này, chúng ta sẽ xem xét cài đặt Django trên máy chủ web.
Cài đặt trên Máy chủ Web
Có hai loại lưu trữ web và loại nào bạn có sẽ ảnh hưởng đến việc bạn có thể sử dụng Django hay không. Nếu bạn đã chia sẻ lưu trữ, bạn hoàn toàn phụ thuộc vào máy chủ lưu trữ của bạn.
Nhiều máy chủ web giá rẻ không hỗ trợ Python. Mặc dù PHP gần như được đảm bảo, nhưng hỗ trợ cho các ngôn ngữ khác thường không. Bạn sẽ phải kiểm tra bảng điều khiển để xác định xem Python (và Django) có khả dụng hay không. Rõ ràng, quá trình này hơi khác với mỗi máy chủ. Hầu hết tất cả các dịch vụ lưu trữ đều chạy trên Apache và chúng tôi có thể sử dụng nó để lưu trữ Django, sử dụng
mod_wsgi
hoặcmod_python
Mô-đun Apache.Hầu hết các máy chủ web chạy tập lệnh bằng một số ngôn ngữ sử dụng CGI. Django có thể chạy trên FastCGI và về mặt lý thuyết cũng có thể chạy trên CGI, nhưng tính năng này không được hỗ trợ chính thức và sẽ quá chậm đối với một trang web sản xuất thực tế. Bạn sẽ cần kiểm tra xem chúng đã được cài đặt chưa. Chúng thường được tìm thấy dưới một tiêu đề, như “CGI và Hỗ trợ ngôn ngữ viết kịch bản”.
Nếu bạn có máy chủ lưu trữ VPS, hoặc đủ may mắn để có một máy chủ chuyên dụng, cuộc sống của bạn sẽ dễ dàng hơn nhiều. Thông thường, chúng được cài đặt sẵn Python và từ đó, bạn chỉ cần làm theo các bước tương tự mà chúng tôi đã trải qua để có được bản sao cục bộ của Django đang chạy. Nếu bạn không có Python, bạn có thể cài đặt nó bằng trình quản lý gói. Hệ thống của bạn thậm chí có thể đi kèm với Django.
Khi bạn đã cài đặt xong Django trên máy chủ của mình, hãy tải lên trang web bạn vừa tạo bằng bất kỳ ứng dụng khách chuyển tệp nào. Bạn có thể đặt tệp ở bất cứ đâu, nhưng không để chúng ở nơi
public
hoặc bất kỳ ai cũng có thể xem mã nguồn của trang web của bạn. Tôi sử dụng/home
cho tất cả các dự án của tôi.Tiếp theo, tạo cơ sở dữ liệu MySQL có tên django_blog trên máy chủ của bạn. Bạn sẽ phải tạo lại tài khoản của mình cho bảng điều khiển quản trị, nhưng đây là việc một lần.
Nếu bạn cố gắng chạy điều này, bạn có thể nhận được lỗi và đó là do cài đặt cho máy chủ khác với cài đặt trên máy tính cục bộ của bạn. Bạn có thể cần thay đổi mật khẩu cơ sở dữ liệu trong settings.py , nhưng tùy thuộc vào cấu hình máy chủ của bạn, bạn cũng có thể gặp phải các vấn đề khác. Google là người bạn của bạn trong những tình huống này!
Để chạy máy chủ lần này, lệnh hơi khác một chút. Bạn phải chỉ định địa chỉ IP và cổng để có thể truy cập trang web qua internet.
python.8 management.py runningerver your-server-ip:8000Nếu bạn truy cập trang web của mình trong trình duyệt web, trên cổng 8000, bạn sẽ thấy trang web của mình!