我有一个非常简单的表单,其中包含所有状态+缩写的选择.当使用键盘导航第二个按键时,在某些情况下不会改变ng-model值.例如,如果您选择选择元素并点击T,它将正确选择田纳西州,TN将被放入ng模型.再次按下箭头或T会将显示的值更新为Texas,但ng-model仍设置为TN.奇怪的是,如果它有2个不同的字母,则不会发生这种情况,因此T后跟A正确地将AL放入ng模型中.
HTML看起来像这样:
<div>
<label for="user_city">City</label>
<input type="text" name="user_city" id="user_city" ng-model="user.city" />
<label for="user_state">State*</label>
<select name="user_state" id="user_state" ng-model="user.state" style="width: 228px" required>
<option value="AL">Alabama</option>
<option value="AK">Alaska</option>
<option value="AZ">Arizona</option>
<option value="AR">Arkansas</option>
<option value="CA">California</option>
<option value="CO">Colorado</option>
<option value="CT">Connecticut</option>
<option value="DE">Delaware</option>
<option value="DC">District Of Columbia</option>
<option value="FL">Florida</option>
<option value="GA">Georgia</option>
<option value="HI">Hawaii</option>
<option value="ID">Idaho</option>
<option value="IL">Illinois</option>
<option value="IN">Indiana</option>
<option value="IA">Iowa</option>
<option value="KS">Kansas</option>
<option value="KY">Kentucky</option>
<option value="LA">Louisiana</option>
<option value="ME">Maine</option>
<option value="MD">Maryland</option>
<option value="MA">Massachusetts</option>
<option value="MI">Michigan</option>
<option value="MN">Minnesota</option>
<option value="MS">Mississippi</option>
<option value="MO">Missouri</option>
<option value="MT">Montana</option>
<option value="NE">Nebraska</option>
<option value="NV">Nevada</option> …Run Code Online (Sandbox Code Playgroud) 我们正在将django-rest-framework从3.1.3升级到3.5.3.在升级之后,利用DefaultRouter生成URL的所有ModelViewSet和viewsets.GenericViewSet视图都不再允许HEAD方法调用.我搜索了发行说明和文档,但未能找到任何导致HEAD被禁止的设置或更改.
我能够通过继承DefaultRouter并改变路由默认值来解决这个问题,但我不认为这是最好的或正确的解决方案.从django-rest-framework问题和文档中读取,似乎django-rest-framework应该自动处理HEAD和OPTIONS方法.
@detail_route,@ list_route和从ApiView派生的视图允许GET方法自动获得HEAD和OPTION方法.
为什么升级后HEAD方法会消失?确保路径上允许HEAD方法的正确方法是什么?
我们的路由和ModelViewSet定义非常标准,这是一个非工作路由:
from rest_framework.routers import DefaultRouter
from user_profile import views
router = DefaultRouter(trailing_slash=False)
router.register(r'user_names', views.UserNameView)
urlpatterns = router.urls
Run Code Online (Sandbox Code Playgroud)
并且观点:
class UserNameView(mixins.ListModelMixin,
mixins.RetrieveModelMixin,
viewsets.GenericViewSet):
queryset = User.objects.only(
"id", "first_name", "last_name", "email",
"mobile_phone", "photo", "is_active", "date_joined"
).select_related("photo").all()
serializer_class = serializers.UserNameSerializer
Run Code Online (Sandbox Code Playgroud)
邮递员对HEAD电话的回应:
Status: 405 Method Not Allowed
Allow ?GET, OPTIONS
Content-Type ?application/json
Date ?Wed, 09 Nov 2016 20:50:41 GMT
Server ?WSGIServer/0.1 Python/2.7.12
Vary ?Cookie
X-Frame-Options ?SAMEORIGIN
x-xss-protection ?1; mode=block
Run Code Online (Sandbox Code Playgroud)