我是 Django
Và Khung phần còn lại của Django
Người mới, tôi đang cố gắng tạo nhiều tuyến để lấy dữ liệu từ cơ sở dữ liệu.
bây giờ trong tôi urls.py
Trong tập tin tôi có cái này
bộ định tuyến = bộ định tuyến.DefaultRouter()
router.register(r'cpuProjects', cpuProjectsViewSet, base_name='cpuProjects'),
Cái này trả về cái này
"cpuProjects": "http://127.0.0.1:8000/cpuProjects/"
Có thể làm được điều này không http://127.0.0.1:8000/cpuProjects/
=> Quay lại tất cả các mụchttp://127.0.0.1:8000/cpuProjects/ad
=> Trả về một mục cụ thể.
Theo quan điểm của tôi, tôi có cái này
lớp cpuProjectsViewSet(viewsets.ViewSet):
serializer_class = serializers.cpuProjectsSerializer
#lookup_field = 'tên_dự án'
tra cứu_url_kwarg = 'tên_dự án'
danh sách def (tự, yêu cầu):
all_rows = connect_database()
serializer = serializers.cpuProjectsSerializer(instance=all_rows, many=True)
trả về phản hồi (serializer.data)
def lấy (tự, yêu cầu, project_name=None):
thử:
opc = {'name_proj' : project_name }
all_rows = connect_database(opc)
ngoại trừKeyError:
trả về Phản hồi (trạng thái = trạng thái.HTTP_404_NOT_FOUND)
ngoại trừ ValueError:
trả về Phản hồi (trạng thái = trạng thái.HTTP_400_BAD_REQUEST)
serializer = serializers.cpuProjectsSerializer(instance=all_rows, many=True)
trả về phản hồi (serializer.data)
Bây giờ tôi muốn url của mình chấp nhận một cái gì đó như
http://127.0.0.1:8000/cpuProjects/ad/comments
http://127.0.0.1:8000/cpuProjects/ad/ussing
http://127.0.0.1:8000/cpuProjects/ad/process
Đối với điều này tôi đã thêm url mới này
router.register(r'cpuProjects/([a-zA-Z0-9]+)$', cpuProjectsViewSet, base_name='cpuProjects'),
Nhưng bây giờ khi tôi thử điều này
http://127.0.0.1:8000/cpuProjects/ad/ussing
Tôi nhận được "Không tìm thấy trang"
Mình biết URL này phải gọi hàm truy xuất mới lấy được tham số, vậy tại sao lại xảy ra lỗi này?
URL này sẽ không được thực thi với
quá trình tương tự
http://127.0.0.1:8000/cpuProjects/ad
Cảm ơn trước!
Điều này khác với trước đây của chúng tôi Hỏi đáp Khá giống với những gì được thực hiện trong
từ Rest_framework.designators nhập chi tiết_route, list_route
@detail_route(url_path='(?P[\w-]+)/(?P[\w-]+)')
def get_by_name(self, request, pk=None, slug=None, what=None):
in (sên, cái gì)
Tương tự như vậy, bạn có thể danh sách_route
làm điều tương tự
Tôi là một lập trình viên xuất sắc, rất giỏi!