ฉันเพิ่งเริ่มทำงานกับ Django ที่มาจาก Spring MVC มาหลายปีและรูปแบบการติดตั้งใช้งานเหมือนเป็นบ้าเล็กน้อย หากคุณไม่คุ้นเคยรูปแบบ Django จะเริ่มต้นด้วยคลาสของโมเดลโมเดลที่กำหนดฟิลด์ของคุณ ฤดูใบไม้ผลิเริ่มต้นคล้ายกับวัตถุการสนับสนุนแบบฟอร์ม แต่ที่ Spring จัดเตรียมtaglibสำหรับการรวมองค์ประกอบของฟอร์มเข้ากับวัตถุสำรองภายใน JSP ของคุณ Django มีวิดเจ็ตของฟอร์มที่เชื่อมโยงโดยตรงกับโมเดล มีวิดเจ็ตเริ่มต้นที่คุณสามารถเพิ่มแอตทริบิวต์สไตล์ให้กับฟิลด์ของคุณเพื่อใช้ CSS หรือกำหนดวิดเจ็ตที่กำหนดเองอย่างสมบูรณ์เป็นคลาสใหม่ ทุกอย่างจะไปในรหัสหลามของคุณ ที่ดูเหมือนว่าถั่วกับฉัน ก่อนอื่นคุณจะใส่ข้อมูลเกี่ยวกับมุมมองของคุณโดยตรงในแบบจำลองของคุณและประการที่สองคุณจะผูกพันรูปแบบของคุณกับมุมมองที่เฉพาะเจาะจง ฉันพลาดอะไรไปรึเปล่า?
แก้ไข: โค้ดตัวอย่างบางส่วนตามที่ร้องขอ
Django:
# Class defines the data associated with this form
class CommentForm(forms.Form):
# name is CharField and the argument tells Django to use a <input type="text">
# and add the CSS class "special" as an attribute. The kind of thing that should
# go in a template
name = forms.CharField(
widget=forms.TextInput(attrs={'class':'special'}))
url = forms.URLField()
# Again, comment is <input type="text" size="40" /> even though input box size
# is a visual design constraint and not tied to the data model
comment = forms.CharField(
widget=forms.TextInput(attrs={'size':'40'}))
MVC ฤดูใบไม้ผลิ:
public class User {
// Form class in this case is a POJO, passed to the template in the controller
private String firstName;
private String lastName;
get/setWhatever() {}
}
<!-- JSP code references an instance of type User with custom tags -->
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<!-- "user" is the name assigned to a User instance -->
<form:form commandName="user">
<table>
<tr>
<td>First Name:</td>
<!-- "path" attribute sets the name field and binds to object on backend -->
<td><form:input path="firstName" class="special" /></td>
</tr>
<tr>
<td>Last Name:</td>
<td><form:input path="lastName" size="40" /></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="Save Changes" />
</td>
</tr>
</table>
</form:form>