Làm cách nào để chạy trình bao Python trong Django?

Đôi khi bạn có thể cần thực thi tập lệnh python trong trình bao hoặc dự án Django. Có nhiều cách để làm điều này. Trong bài viết này, chúng ta sẽ xem xét các cách khác nhau để chạy tập lệnh python trong Django. Điều này rất hữu ích nếu bạn cần chạy tập lệnh python cho các tác vụ nền trong dự án Django của mình. Trong nhiều trường hợp, các nhà phát triển web sử dụng phương pháp này để thực thi tập lệnh python trong trình bao Django và chạy nó dưới dạng công việc định kỳ để gửi tin nhắn và email tự động đến người dùng của họ


Cách chạy Python Script trong Dự án Django

Dưới đây là các cách khác nhau để chạy tập lệnh Python, ví dụ: kiểm tra. py trong dự án Django. Hầu hết các lệnh sau sử dụng “. /quản lý. py”. Nếu chúng không hiệu quả với bạn, vui lòng thử các lệnh tương tự với “sudo python. /quản lý. py” thay vào đó. Điều này có thể xảy ra do biến Python PATH trong hệ thống Linux của bạn chưa được đặt


1. Sử dụng vỏ

Điều hướng đến thư mục gốc của dự án Django chứa quản lý. py và chạy tập lệnh python bằng lệnh sau. Chúng tôi đã giả định rằng quản lý. py và kiểm tra. py nằm trong cùng một thư mục

$ ./manage.py shell < test.py

Nếu tập lệnh python của bạn nằm trong một thư mục khác, bạn cần cung cấp đường dẫn đầy đủ tới tập lệnh python của mình. Trong ví dụ sau, tập lệnh python của chúng tôi được đặt tại /home/ubuntu/test. py

$ ./manage.py shell < /home/ubuntu/test.py


2. Sử dụng tập tin thực thi

Bạn cũng có thể đăng nhập vào Django shell trước bằng lệnh sau

$ ./manage.py shell

và sau đó sử dụng lệnh execfile để chạy tập lệnh python

>>> execfile['/home/ubuntu/test.py']

Trong python 3+, bạn sẽ cần sử dụng lệnh exec thay vì sử dụng execfile

>>> exec[open['/home/ubuntu/test.py'].read[]]


3. sử dụng quản lý. py

Bạn cũng có thể sử dụng quản lý. py một mình để chạy các tập lệnh python như hình bên dưới

$ ./manage.py /home/ubuntu/test.py

Trong bài viết này, chúng ta đã thấy ba cách khác nhau để chạy tập lệnh python từ trình bao Django. Mặc dù không nên chạy các tập lệnh python từ trình bao Django, nhưng đây là một cách tuyệt vời để chạy các tác vụ nền. Điều này là do khi bạn chạy tập lệnh python từ trình bao Django, nó sẽ cho phép bạn truy cập vào tất cả các mô hình, chế độ xem và chức năng được xác định trong dự án Django của bạn

Bước tiếp theo của bạn là đưa dữ liệu vào cơ sở dữ liệu của bạn. Đối với điều này, bạn sẽ sử dụng trình bao Django để đưa một dự án vào cơ sở dữ liệu của mình. Đi đến thiết bị đầu cuối của bạn và khởi động trình bao Django bằng cách nhập nội dung sau

$ python manage.py shell

Thao tác này sẽ mở ra một thiết bị đầu cuối, nhưng nó đã nhập các cài đặt Django, vì vậy nó cho phép bạn làm việc trực tiếp từ thư mục gốc của dự án Django

Pygator trên

Nhưng thực tế bạn sẽ điền vào cơ sở dữ liệu của mình như thế nào nếu bạn có hàng nghìn triệu hàng mẫu?

Martin Breuss Nhóm RP trên

Câu hỏi hay. Là một dự án mới bắt đầu, điều này giả định rằng bạn đang xây dựng một dự án ví dụ nhỏ và bạn sẽ lấp đầy DB của mình khi bạn xây dựng danh mục đầu tư của mình

Tuy nhiên, Django có khả năng tích hợp với cơ sở dữ liệu hiện có và vì đó là tất cả mã Python, bạn cũng có thể viết một tập lệnh tùy chỉnh để tìm nạp dữ liệu từ nguồn của bạn và chuyển nó vào DB của dự án của bạn

báo động lại trên

Đợi đã. Bạn đã sao chép các tệp hình ảnh từ máy chủ của riêng mình, điều này tất nhiên là tôi không thể làm được. Làm thế nào tôi có thể nhận được bản sao của chúng?

Martin Breuss Nhóm RP trên

@reblark. Tôi đã chụp một số ảnh chụp màn hình ngay trên máy tính của mình và chuyển các tệp đó vào cấu trúc thư mục Django mà bạn thấy ở trên. Đường dẫn mà bạn nhìn thấy trỏ đến đường dẫn tương đối trong dự án Django. Đây có thể là bất kỳ tệp hình ảnh nào bạn có cục bộ, bạn chỉ cần đặt tên khớp

báo động lại trên

VÂNG. Tôi không nhìn thấy ảnh chụp màn hình hoặc cấu trúc và tôi xin lỗi vì không thể đồng bộ nhận xét của mình nhưng thật khó để có thể giao tiếp qua một phiên cụ thể. Bây giờ là 4/11 lúc 11 giờ. 00 AM PST và tôi chỉ muốn bạn biết rằng tôi đã xử lý sự cố cơ sở dữ liệu PyCharm. Một mặt, nó rất bực bội. Mặt khác, tìm ra mọi thứ là rất bổ ích. Tất cả đều điên rồ

Gaurav yadav trên

Có cách nào để chúng tôi có thể nhập dữ liệu thông qua giao diện người dùng không?

Martin Breuss Nhóm RP trên

Có, bạn có thể sử dụng Giao diện quản trị đi kèm với ứng dụng Django

Nếu không, bạn sẽ phải xây dựng Biểu mẫu Django của riêng mình để thu thập thông tin đầu vào của người dùng

Siggi Berg trên

Cơ sở dữ liệu không hoạt động trong dự án của tôi. Đây là giao diện của vỏ Django

from projects.models import Project p1 = Project[title=”test project”,description = “This is a test, 1234”,technologi=”Django”, image=”F-01.jpg”] p1.save

Có gì đó của cô ấy dường như đã đi sai. Dù sao tôi vẫn tiếp tục. Nhưng dường như không có gì được đưa vào cơ sở dữ liệu. ***>> kết quả = Dự án. các đối tượng. tất cả các[]

results

*

Siggi Berg trên

Tôi xin lỗi. Tôi thấy rằng tôi có khoảng trống trong “dự án. lệnh mô hình. Ngoài ra, tôi đã quên [] sau p1. tiết kiệm. Bây giờ mọi thứ đang hoạt động tốt

koutsellisthemistoklis trên

1] Khi bạn viết p1 = Projects[title=’test project’,. ]

người mẫu ở đâu. Đối số mô hình của lớp Dự án?

Ngoài ra, một câu hỏi khác

2] Trong khai báo lớp Dự án, các biến. tiêu đề, mô tả, công nghệ, hình ảnh không nên tự. danh hiệu, bản thân. mô tả, bản thân. công nghệ, bản thân. hình ảnh thay thế?

Martin Breuss Nhóm RP trên

Xin chào @koutsellisthemistoklis

1] Thừa kế

Bạn đang làm gì với đoạn mã dưới đây

from django.db import models

class Project[models.Model]:
    # your code

là bạn đang kế thừa các thuộc tính từ lớp

projects.objects.all[]
5 của Django sang mô hình mới mà bạn đang tạo. Do đó,
projects.objects.all[]
6 không phải là một đối số mà bạn cần phải vượt qua khi tạo một thể hiện của một lớp. Các lớp hoạt động khác với chức năng trong trường hợp này. Kiểm tra bài viết của chúng tôi về Thừa kế và Thành phần. Hướng dẫn OOP Python và phần trong khóa học liên kết của chúng tôi

2] Thiếu

projects.objects.all[]
7 trong Django Models

Cách xác định một lớp trong mô hình Django rất đơn giản và hơi bất thường là do Django có các siêu dữ liệu thực sự đảm nhận công việc tạo lớp của bạn

Điều này cho phép định nghĩa lớp rất rõ ràng và dễ dàng. Lưu ý rằng bạn cũng không cần phải viết một phương thức

projects.objects.all[]
8 rõ ràng cho một lớp mô hình

Tất cả điều này là nhờ vào siêu dữ liệu và khối lượng công việc khổng lồ của Django phía sau hậu trường nhằm giúp bạn phát triển web dễ dàng hơn. ]

okorobright13 trên

[Bảng điều khiển tương tác]

from projects.models import project Traceback [most recent call last]: File “”, line 1, in ImportError: cannot import name ‘project’ from ‘projects.models’ [C:\Users\Dell\PycharmProjects\django-portfol io\projects\models.py]

xin vui lòng làm thế nào tôi có thể giải quyết điều này nhờ tiến bộ

Martin Breuss Nhóm RP trên

Xin chào @okorobright13. Có vẻ như đây có thể là một lỗi đánh máy. Mô hình

from django.db import models

class Project[models.Model]:
    # your code
4 của bạn nên được viết hoa thay vì viết thường

Bạn muốn nhập lớp

from django.db import models

class Project[models.Model]:
    # your code
4 mà bạn đã xác định trong
$ ./manage.py shell < /home/ubuntu/test.py
41, do đó, câu lệnh nhập của bạn cần đảm bảo rằng nó thực sự có thể tìm thấy lớp đó. Máy tính rất rõ ràng với chính tả và viết hoa, vì vậy, nó sẽ chỉ tìm thấy nó nếu nó khớp chính xác. ] Hy vọng rằng sửa nó

okorobright13 trên

Martin Breuss, cảm ơn rất nhiều, bạn đúng là đang làm việc và tôi đang trong quá trình xử lý, hahahahaha lỗi tin nhắn là bạn của chúng tôi. 1

jacob6 trên

$ ./manage.py shell < /home/ubuntu/test.py
5

chuyện gì đang xảy ra ở đó vậy?

jacob6 trên

Đừng bận tâm. tôi tìm thấy lỗi. Hóa ra bạn phải rất chính xác với dấu ngoặc đơn và ký hiệu. =oP

Martin Breuss Nhóm RP trên

Đó là một điều khó khăn, bởi vì mũi tên không chỉ đúng chỗ ở đây

Kiểm tra phần cuối của dòng phía trên nơi mà

$ ./manage.py shell < /home/ubuntu/test.py
42 đang trỏ tới, còn thiếu một thứ nhỏ…

Bạn có thể nhận thấy rằng có điều gì đó không ổn bằng cách lời nhắc bắt đầu dòng mà bạn đang viết

$ ./manage.py shell < /home/ubuntu/test.py
72, nó phải bắt đầu bằng một
$ ./manage.py shell < /home/ubuntu/test.py
44, nhưng thay vào đó lại bắt đầu bằng một
$ ./manage.py shell < /home/ubuntu/test.py
45. Các dấu chấm có nghĩa là nó tiếp tục dòng trên

Hy vọng rằng sẽ giúp bạn tìm thấy nó. . ]

c4inmypants trên

Hey! So I have a weird question. So in the part after p1.save[] I did results = project.objects.all and when I did >>>results I got this :

Tôi nhận ra sai lầm của mình là đã không thêm dấu [] vào cuối và mọi thứ đều ổn. Vì vậy, câu hỏi của tôi là [] yêu cầu python làm gì? . Ai đó có thể giải thích cho tôi, tôi chỉ rất tò mò

Martin Breuss Nhóm RP trên

Xin chào @c4inmypants và bạn đã làm rất tốt khi tìm ra nó và luôn tò mò. ]

Câu trả lời ngắn gọn cho câu hỏi của bạn là trong Python,

$ ./manage.py shell < /home/ubuntu/test.py
46 thực thi một hàm hoặc một phương thức

Hàm và Phương thức

Các hàm và phương thức có một số chức năng được mã hóa trong chúng có thể được truy cập bằng cách gọi chúng. Đó là lý do tại sao sử dụng

$ ./manage.py shell < /home/ubuntu/test.py
46 ở cuối tên của chúng được gọi là Lệnh gọi hàm. Trong trường hợp của bạn, để chính xác, bạn phải nói về một “phương thức” thay vì “chức năng” vì mã thực hiện công việc phụ thuộc vào một đối tượng cụ thể. 🙄 Đừng quá lo lắng về điều đó, tuy nhiên, đối với tình huống này, đó chủ yếu là thuật ngữ. Nhưng nếu muốn, bạn có thể đọc thêm về Sự khác biệt giữa Phương thức và Hàm

Ví dụ của bạn

Vì vậy, khi bạn đọc rằng

$ ./manage.py shell < /home/ubuntu/test.py
46 thực thi phương thức, nó có thể khiến bạn nghĩ rằng cần phải có thứ gì đó để thực thi. Đó là đối tượng mà bạn đang đề cập đến và chứa mã logic. Hãy xem ví dụ của bạn, loại bỏ phép gán biến

$ ./manage.py shell
3

Ở đây bạn đang tham khảo phương thức

$ ./manage.py shell < /home/ubuntu/test.py
49 trên đối tượng
$ ./manage.py shell
50 của mình, nhưng bạn không gọi nó. Đối với tất cả những gì Python biết, bạn muốn truy cập phương thức chứ không phải thực thi nó. Vì vậy, nó thực hiện đấu thầu của bạn và cho bạn biết những gì bạn nhận được

$ ./manage.py shell < /home/ubuntu/test.py
7

Bạn có thể tìm hiểu sâu hơn về đầu ra này và học hỏi được một chút từ nó, nhưng điểm chính của ví dụ này là

  1. Tham khảo, không thực hiện. Khi bỏ dấu ngoặc, Python cho phép bạn truy cập vào
    $ ./manage.py shell
    51 của một số đối tượng nằm trong bộ nhớ máy tính của bạn
  2. Chấp hành. Nếu bạn muốn làm cho phương thức thực hiện công việc của nó, bạn cần gọi nó bằng cách thêm
    $ ./manage.py shell < /home/ubuntu/test.py
    46 vào cuối, e. g

________số 8

redxking trên

Người hướng dẫn đặt truy vấn thành p1 để sau khi chạy.

$ ./manage.py shell
53

Chạy.

$ ./manage.py shell < /home/ubuntu/test.py
72

sau đó.

$ ./manage.py shell < /home/ubuntu/test.py
78

alazejha trên

Thông báo lỗi là

$ ./manage.py shell < /home/ubuntu/test.py
4

Tôi đang làm gì sai?

Ricky White Nhóm RP trên

@alazejha Xin chào. Không nhìn thấy mã của bạn, thật khó để nói, nhưng đó có thể là một lỗi đánh máy đơn giản. Bạn đang nhập lớp

from django.db import models

class Project[models.Model]:
    # your code
4 hoặc
$ ./manage.py shell
57?

James trên

Chỉ tò mò nếu có một cách dễ dàng để xem mọi thứ trong đối tượng truy vấn. Vì vậy, trong bài học này bạn có thể làm điều này

$ ./manage.py shell
5

Điều đó khá tẻ nhạt mặc dù. Điều duy nhất tôi có thể nghĩ đến là nhìn vào bên trong đối tượng và lọc ra các thuộc tính riêng tư

>>> execfile['/home/ubuntu/test.py']
7

Có cách nào tốt hơn hay nếu bạn muốn xem bên trong cơ sở dữ liệu, bạn nên sử dụng một công cụ cơ sở dữ liệu?

Bartosz Zaczyński Nhóm RP trên

@jamesrsmall Thông thường, bạn sẽ sử dụng một lớp dữ liệu, lớp này thực hiện biểu diễn chuỗi ngay lập tức

>>> execfile['/home/ubuntu/test.py']
8

Vì các mô hình Django sử dụng bộ mô tả nên chúng không tương thích với các lớp dữ liệu. Tuy nhiên, bạn có thể thử tạo một lớp tùy chỉnh để gói gọn logic của mình

from django.db import models

class Project[models.Model]:
    # your code
0

Sau đó, trong vỏ Django của bạn

from django.db import models

class Project[models.Model]:
    # your code
1

Lưu ý rằng đoạn mã này cực kỳ đơn giản và không tính đến việc duyệt đệ quy hoặc thậm chí xử lý các loại dữ liệu khác nhau. Tôi đã từng triển khai kỹ lưỡng điều này trong một trong các dự án của mình, nhưng không thể tìm thấy nó nữa

Có rất nhiều thư viện của bên thứ ba trên PyPI có thể làm những gì bạn đang tìm kiếm. Hãy thử tìm kiếm “repr” hoặc “str”

James trên

@Bartek - rất tuyệt, cảm ơn. Tôi đánh giá cao ví dụ và các liên kết

gburbano92 trên

Xin chào, tôi đang gặp một số khó khăn khi các hình ảnh “hàng ngày”, “dự án thử nghiệm”, “việc cần làm” xuất hiện trong tệp img. Tôi đã hoàn thành theo hướng dẫn tệp kép dự án>img nhưng không có hình ảnh, thông qua máy tính để bàn của tôi, tôi có thể thấy các tệp có trong tệp django portfolio>projects>static>projects>img của mình nên không chắc chắn điều gì gây ra lỗi không hiển thị trong tệp ảo của tôi

crispineda34 trên

Đối với lệnh này, tôi tiếp tục gặp lỗi này. Tôi không chắc chắn chính xác về cách tiến hành. “Dự án lớp mẫu. người mẫu. Dự án không khai báo app_label rõ ràng và không có trong ứng dụng trong INSTALLED_APPS. ”

Bartosz Zaczyński Nhóm RP trên

@ crispineda34 Nếu bạn google thông báo lỗi đó và theo dõi kết quả tìm kiếm đầu tiên, bạn sẽ gặp câu hỏi StackOverflow, câu hỏi này dường như có câu trả lời phù hợp với bạn

Làm cách nào để chạy tập lệnh python trong HTML Django?

Cách chạy tập lệnh python bằng cách nhấp vào nút html .
bước 1. Pip cài đặt django. .
bước 2. Mở cửa sổ nhắc của bạn và tạo một thư mục có tên "django-webapp".
bước 3. Trong cửa sổ nhắc của bạn, điều hướng đến django-webapp và chạy django-admin startproject Geniusvoice [hoặc tên dự án django của riêng bạn]

Làm cách nào để chạy lệnh trong Django?

Chạy trợ giúp django-admin để hiển thị thông tin sử dụng và danh sách các lệnh do mỗi ứng dụng cung cấp. Chạy django-admin help --commands để hiển thị danh sách tất cả các lệnh có sẵn. Chạy trợ giúp django-admin

Làm cách nào để sử dụng python trong Django?

Hãy tiếp tục đọc Real Python bằng cách tạo một tài khoản miễn phí hoặc đăng nhập. .
Chuẩn bị môi trường của bạn
Cài đặt Django và ghim các phụ thuộc của bạn
Thiết lập dự án Django
Bắt đầu một ứng dụng Django
Tham khảo lệnh
Phần kết luận

Shell trong Django là gì?

Django shell là môi trường shell giao diện dòng lệnh tương tác kết hợp chức năng khung Django với python shell thông thường .

Chủ Đề