Chúng ta có thể sử dụng php trong django không?

Mô tả dự án

=================
django-php-bridge - Authentication betwen Django and PHP
=========================================================

*******
Mục đích
*******

`Django-PHP-Bridge`_ là một chương trình phụ trợ xác thực Django cho phép dự án Django
của bạn chuyển người dùng đến và đi từ ứng dụng PHP một cách dễ dàng. Điều này cho phép
bạn xây dựng một ứng dụng có cả hai thành phần PHP và Django trong khi vẫn giữ
trải nghiệm người dùng vững chắc.

Cho dù bạn đang chuyển từ PHP sang Django, từ Django sang PHP, tích hợp hai
ứng dụng riêng biệt hay xây dựng ứng dụng kết hợp, `Django-PHP-Bridge`_ đều nhằm mục đích< .
help make the distinction irrelevant to your users.

******************
Phương pháp tiếp cận chung
*********

Có một số cách khác nhau để giải quyết vấn đề này, chủ yếu xoay quanh
xung quanh hành vi mặc định của bên nào bạn sử dụng và bên nào cần tùy chỉnh nhiều hơn
. Nói chung, chúng tôi [và tài liệu này giả định] rằng
hành vi mặc định của Django nên được sử dụng nếu có thể. Tuy nhiên,
hoàn toàn có thể sử dụng chương trình phụ trợ phiên được cung cấp như một phần của
cách tiếp cận tập trung vào PHP hơn.

Mặc định Django được sử dụng
======

* ``django. đóng góp. xác thực. người mẫu. Người dùng`` được sử dụng để lưu trữ Người dùng, với tiêu chuẩn
Django Tiện ích mở rộng Hồ sơ được khuyến nghị cho các trường bổ sung.
* Cơ sở dữ liệu được sử dụng làm nơi lưu trữ phiên, nhưng điều này có thể dễ dàng
tùy chỉnh.

Mặc định PHP được sử dụng
=================

* ``django-php-bridge. phụ trợ. db`` sử dụng định dạng tuần tự hóa riêng của PHP để
lưu trữ dữ liệu phiên.

*****
Cách sử dụng
*****

Hướng dẫn sử dụng này giả định một số điều về thiết lập của bạn

1. Bạn đang sử dụng ``django của Django. đóng góp. xác thực. phụ trợ. ModelBackend`` làm phụ trợ xác thực
của bạn và bạn muốn sử dụng ``django. đóng góp. xác thực. người mẫu. Người dùng``
để lưu trữ thông tin người dùng cơ bản.
2. Các dự án PHP và Django của bạn chia sẻ cơ sở dữ liệu. Đó là cách
điều phối phiên được thực hiện.
3. Nếu bạn có một lược đồ tùy chỉnh để lưu trữ thông tin hồ sơ và người dùng của mình, thì
bạn đã chuyển đổi lược đồ đó thành lược đồ của Django.

Cách sử dụng. Phía Django
==================

Về phía django của dự án của bạn, việc cài đặt khá đơn giản

Cài đặt `Django-PHP-Bridge`_

$ pip cài đặt django-php-cầu

Định cấu hình dự án Django của bạn để sử dụng phụ trợ phiên tương thích với PHP bằng cách
thêm phần sau vào ``cài đặt của bạn. py``.

SESSION_ENGINE = 'django_php_bridge. phụ trợ. db'
SESSION_COOKIE_NAME = 'PHPSESSID'

Hãy cho dự án Django của bạn biết rằng bạn sẽ sử dụng phần PHP của dự án
để thực hiện đăng nhập thực tế. Bạn thực hiện việc này bằng cách đặt cài đặt ``LOGIN_URL`` trong
``cài đặt. py`` để trỏ tới URL do PHP cung cấp sẽ xử lý
đăng nhập của bạn. ví dụ.

LOGIN_URL = '/'

Cách sử dụng. Phía PHP
===============

Việc cài đặt và thiết lập phía PHP rất phức tạp bởi thực tế là các ứng dụng PHP
nhìn chung rất khác nhau. Người trợ giúp/hướng dẫn sử dụng
Django-PHP-Bridge với các khung công tác PHP phổ biến như `CakePHP`_ và `Symfony`_
sẽ dễ viết hơn [và .

Nói chung, các bước liên quan là

Tạo và sử dụng bảng phiên tương thích
----------------------

Bảng phiên bạn sử dụng cần phải tương thích với giản đồ mà Django
mong đợi. SQL chính xác để tạo bảng sẽ khác nhau, nhưng Tài liệu Django trên
`lệnh sql`_ chỉ cho chúng tôi một cách dễ dàng để lấy SQL từ django
project by running::

quản trị viên $ django. phiên py sql

Nếu bạn đang sử dụng MySQL, bạn có thể sử dụng ``contrib/mysql/django_session_table. sql``

Ngoài ra, bạn có thể sử dụng syncdb của Django để tạo bảng

quản lý $. py syncdb

_`lệnh sql`. http. // tài liệu. djangoproject. com/en/dev/ref/django-admin/#sql-appname-appname

Đặt Trình xử lý phiên phù hợp trên mỗi trang
-----------------------

PHP cho phép xác định `trình xử lý phiên tùy chỉnh`_, cho phép chúng tôi
sử dụng bảng django_session mà chúng tôi đã tạo ở trên. Trình xử lý phiên bạn sử dụng sẽ
cần biết về lược đồ của bảng django_session và bạn cần
đăng ký trình xử lý phiên này trên mọi trang *trước khi* gọi .

Một lớp trình xử lý phiên ví dụ được cung cấp trong
``contrib/php/djangoSession. lớp. php``.

_`trình xử lý phiên tùy chỉnh`. http. //php. net/thủ công/vi/phiên. xử lý tùy chỉnh. php

Tạo và sử dụng bảng người dùng tương thích
----------------------

Để có bất kỳ mức độ tích hợp hợp lý nào, hầu hết các dự án sẽ cần phải
biết người dùng là ai ở cả phía PHP và Django. Bởi vì hầu hết
các dự án PHP nói chung khác nhau rất nhiều về cách chúng lưu trữ thông tin người dùng, nếu
đến từ một dự án PHP hiện có, điều này có thể sẽ yêu cầu một số công việc tùy chỉnh để< . Các ứng dụng Django thường sử dụng mô hình Người dùng cộng với
convert user data. Django applications generally use a User model plus a
Mô hình hồ sơ để lưu trữ dữ liệu người dùng. Xem `Tài liệu xác thực Django`_ để biết
chi tiết.

Đã bao gồm một ví dụ về lớp PHP dựa trên cùng một lược đồ như
``django. đóng góp. xác thực. người mẫu. Người dùng`` làm ví dụ và điểm bắt đầu. Nó biết
một chút về cách Django lưu trữ mật khẩu và những trường nào là cần thiết,
nhưng chắc chắn nó sẽ cần tinh chỉnh để hoạt động với PHP hiện tại của bạn
project. The file is located at ``contrib/php/user.class.php``.

Đề xuất và đóng góp để làm cho phần này của quá trình tích hợp
dễ dàng hơn đều được hoan nghênh.

_`Tài liệu xác thực Django`. http. // tài liệu. djangoproject. com/vi/1. 3/chủ đề/auth/

Định cấu hình URL được xử lý bởi PHP so với Django
-----------------------

Phần cuối cùng của tích hợp sẽ là cho máy chủ web của bạn biết cách xác định
liệu một yêu cầu nhất định sẽ được giải quyết bởi phía Django hay bởi phía PHP.
Điều này có nghĩa là thay đổi cấu hình của bạn để ví dụ: mọi thứ tại
``/account`` được cung cấp bởi Django và mọi thứ tại ``/blog`` được .
Nếu bạn đang sử dụng các miền hoặc miền phụ khác nhau để phân tách các mặt của ứng dụng,
thì bạn có thể bỏ qua bước này.

Nói chung, để giữ cho phần này lành mạnh, bạn sẽ muốn gửi các phương pháp URL tốt và
tách riêng phần nào trong dự án của bạn xử lý các tác vụ và đối tượng miền cụ thể.
``urls tập trung vào ứng dụng của Django. cấu hình py`` giúp việc này trở nên dễ dàng.
Cần đặc biệt chú ý đến khía cạnh nào trong dự án của bạn
cần xử lý việc đăng nhập và đăng xuất. Nói chung sẽ đơn giản hơn nếu
chỉ Django hoặc chỉ PHP xử lý cả đăng nhập và đăng xuất người dùng và
có thể đơn giản hơn nếu cùng bên đó xử lý đăng ký và chỉnh sửa tài khoản.

Trong trường hợp `Apache2`_ chạy `mod_wsgi`_ cho Django và mod_php [hoặc
tương tự] cho PHP, việc phân tách có thể được thực hiện bên trong tệp VirtualHost.
Tệp vhost mẫu được cung cấp tại ``contrib/apache2/vhost_conf``.

*******
Lịch sử
*******

Phần phụ trợ xác thực này được trích xuất từ ​​mã được sử dụng trong quá trình sản xuất bởi
một start-up quản lý chính sách saas có tên `PolicyStat`_ trong quá trình chuyển đổi kéo dài nhiều năm
của họ . Bạn có thể đọc
một chút về `Chuyển đổi PHP sang Django`_ của họ.

`PolicyStat`_ đã được chuyển đổi thành 100% Django và không còn sử dụng
phương pháp tiếp cận này trong sản xuất, nhưng hy vọng rằng ai đó sẽ quan tâm
in taking an active role in this project.

************
Đóng góp
************

Chủ Đề