小编Afz*_*.H.的帖子

Django"get()得到了一个意外的关键字参数'pk'"错误

我试图重定向到一个页面,我打算在创建一个页面之后将其作为对象的主页实现.

下面是我的views.py的相应部分

            new_station_object.save()
            return HttpResponseRedirect(reverse("home_station", 
                                                kwargs={'pk':   new_station_object.id}
            ))

class StationHome(View):
    def get(self, request):
        return HttpResponse("Created :)")
Run Code Online (Sandbox Code Playgroud)

和我的urls.py的相应部分;

    url(r'^station/(?P<pk>\d+)$', StationHome.as_view(),    name='home_station'),
Run Code Online (Sandbox Code Playgroud)

但我得到了上述错误;

TypeError at /station/2
get() got an unexpected keyword argument 'pk'
Run Code Online (Sandbox Code Playgroud)

有人请帮帮我.

django

30
推荐指数
2
解决办法
4万
查看次数

在 Django 中测试页面内容中的链接

再会!

所以去我的问题,

我有一个带有一些链接的模板,我想断言它们确实存在于我的页面中。

我的 html 部分,

<section>
    <p>Welcome to open radio. We help you get on air!</p>
    <p><a href="{% url 'userlogin' %}">Login</a></p>
    <p><a href="{% url 'liststations' %}">View all our stations</a></p>
    <p><a href="{% url 'userregistration' %}">SignUp!</a></p>      
</section>
Run Code Online (Sandbox Code Playgroud)

我现在的测试,

response = self.client.get(reverse("home"))
assert reverse("userlogin") in response.content
assert reverse("liststations") in response.content
assert reverse("userregistration") in response.content
Run Code Online (Sandbox Code Playgroud)

我的测试通过了,我明白我并不是真正为这里的链接断言,而是为 URL 字符串断言。我如何专门测试链接?

django django-testing python-2.7

5
推荐指数
1
解决办法
2013
查看次数

从Django中的表单发送DELETE请求

我正在尝试从Django中的表单发送DELETE请求,从jQuery获取帮助,请参阅下面的链接;

https://baxeico.wordpress.com/2014/06/25/put-and-delete-http-requests-with-django-and-jquery/

我所拥有的是以下脚本;

<script src="jquery-1.11.3.js"></script>

<script>
  $(document).ready(function(){
    $.ajax({
      id : 'delete',
      headers : {'X_METHODOVERRIDE': 'DELETE'}
    });
  });
</script>
Run Code Online (Sandbox Code Playgroud)

(我打算)以下列形式行事;

<form method="post" id="delete" name="delete" action="">
  {% csrf_token %}
  <input type="submit" value="Delete" />
</form>
Run Code Online (Sandbox Code Playgroud)

以及中间件;

from django.http import QueryDict

class HttpPostTunnelingMiddleware(object):
    def process_request(self, request):
        if request.META.has_key('HTTP_X_METHODOVERRIDE'):
            http_method = request.META['HTTP_X_METHODOVERRIDE']
            if http_method.lower() == 'put':
                request.method  = 'PUT'
                request.META['REQUEST_METHOD'] = 'PUT'
                request.PUT = QueryDict(request.body)
            if http_method.lower() == 'delete':
                request.method  = 'DELETE'
                request.META['REQUEST_METHOD'] = 'DELETE'
                request.DELETE = QueryDict(request.body)
        return None        
Run Code Online (Sandbox Code Playgroud)

我把它添加到我的settings.py中的MIDDLEWARE_CLASSES列表中;

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware', …
Run Code Online (Sandbox Code Playgroud)

django jquery

5
推荐指数
1
解决办法
4228
查看次数

Django AttributeError:'str'对象没有属性'model'

我有以下表格;

class RemoveMemberForm(Form):
    member = forms.ModelChoiceField(queryset="",
                                  empty_label='Choose a Member',
    )
Run Code Online (Sandbox Code Playgroud)

以下观点;

class StationHome(View):
    def get(self, request, pk):
        station = Station.objects.get(pk=pk)
        channels = Channel.objects.filter(station=station)
        members = station.members.all()
        form1 = AddMemberForm()
        form2 = RemoveMemberForm()
        form2.fields['member'].queryset = station.members.all()
        return render(request, 
                      "home_station.html",
                      {"station":station,
                       "form1":form1,
                       "form2":form2,
                       "channels":channels,
                       "members":members,
                   },
                  )

class MemberRemove(View):
    def post(self, request, pk):
        form = RemoveMemberForm(request.POST)
        if form.is_valid():
            Station.objects.get(pk=pk).members.remove(
                form.cleaned_data['member']
            )
            return HttpResponseRedirect(reverse("home_station",
                                        kwargs={'pk':pk},
                                    )
                            )
Run Code Online (Sandbox Code Playgroud)

我要做的是让第二个视图删除所选成员并重定向到第一个视图.但相反,我坚持AttributeError at /station/2/removemember,对应于第二个视图的URL,'str' object has no attribute 'model'

python django

2
推荐指数
1
解决办法
3575
查看次数

标签 统计

django ×4

django-testing ×1

jquery ×1

python ×1

python-2.7 ×1