Django - lấy giá trị từ yêu cầu POST


83

Tôi có mẫu django sau (http: // IP / admin / start / được gán cho một chế độ xem giả định được gọi là chế độ xem):

{% for source in sources %}
  <tr>
    <td>{{ source }}</td>

    <td>
    <form action="/admin/start/" method="post">
      {% csrf_token %}
      <input type="hidden" name="{{ source.title }}">
      <input type="submit" value="Start" class="btn btn-primary">
    </form>
    </td>

  </tr>
{% endfor %}

sourcesobjects.all()mô hình Django được tham chiếu trong khung nhìn. Bất cứ khi nào đầu vào gửi "Bắt đầu" được nhấp vào, tôi muốn chế độ xem "bắt đầu" sử dụng {{ source.title}}dữ liệu trong một hàm trước khi trả về một trang được hiển thị. Làm cách nào để thu thập thông tin ĐÃ ĐĂNG (trong trường hợp này là trong đầu vào ẩn) vào các biến Python?

Câu trả lời:


143

Đọc về các đối tượng yêu cầu mà chế độ xem của bạn nhận được: https://docs.djangoproject.com/en/dev/ref/request-response/#httprequest-objects

Ngoài ra, trường ẩn của bạn cần có tên đáng tin cậy và sau đó là giá trị:

<input type="hidden" name="title" value="{{ source.title }}">

Sau đó, trong một chế độ xem:

request.POST.get("title", "")

Tôi sử dụng Biểu mẫu Django mà tôi không có biểu mẫu độc lập inputvà chỉ có một {{ form }}và biểu mẫu của tôi chỉ có một đầu vào văn bản (charfield). làm thế nào tôi có thể truy cập dữ liệu của nó?
Nitwit

13

Nếu bạn cần làm gì đó trên giao diện người dùng, bạn có thể phản hồi sự kiện gửi trong biểu mẫu của mình. Nếu bạn chỉ đăng bài cho admin / start, bạn có thể truy cập các biến bài đăng trong chế độ xem của mình thông qua đối tượng yêu cầu. request.POST là một từ điển của các biến bài đăng


Câu trả lời khác đã giúp tôi giải quyết một vấn đề mà tôi sẽ hỏi bạn (định nghĩa của bộ chọn tên / giá trị html) trước khi tôi hỏi nó, vì vậy tôi sẽ tiếp tục và đánh dấu câu đó được chấp nhận. Cám ơn sự giúp đở cuả bạn. :)
Randall Ma

2

Đối với các hình thức django, bạn có thể làm điều này;

form = UserLoginForm(data=request.POST) #getting the whole data from the user.
user = form.save() #saving the details obtained from the user.
username = user.cleaned_data.get("username") #where "username" in parenthesis is the name of the Charfield (the variale name i.e, username = forms.Charfield(max_length=64))

UserLoginForm trong câu trả lời là tên của biểu mẫu
Irfan wani
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.