小编And*_*oga的帖子

使用django rest框架在post请求上获取自定义标头

我正在使用django rest框架向我的API发送一个帖子请求:

curl --header "X-MyHeader: 123" --data "test=test" http://127.0.0.1:8000/api/update_log/
Run Code Online (Sandbox Code Playgroud)

在我的休息框架视图中,我想获取我的costum标头,如果自定义标头满足条件,我将继续分析我的帖子数据.

好的,我的观点看起来像:

class PostUpdateLogView(APIView):
    throttle_classes = ()
    permission_classes = ()
    parser_classes = (
        parsers.FormParser,
        parsers.MultiPartParser,
        parsers.JSONParser,
    )  

    renderer_classes = (renderers.JSONRenderer,)

    def post(self, request):
        print request.Meta
        # Get custom header
        # Validate custom header
        # Proceed to analize post data

        # Make response
        content = {
            'response': 'response',
        }

        return Response(content)
Run Code Online (Sandbox Code Playgroud)

我正在尝试在request.Meta元素上找到我的自定义标题,但是当我打印request.Meta时,我收到500错误.如果我打印request.data,我会得到预期的响应.

¿使用django rest框架在我的帖子请求上获取自定义标题的方法是什么?

django curl django-rest-framework

23
推荐指数
3
解决办法
2万
查看次数

django modelformset_factory中的MultiValueDictKeyError

我正在尝试使用编辑formset.然后,我使用modelformset_factory实例化formset中的对象.当请求不是POST时,formset加载完美,但是,如果请求是POST,则formset构造函数会引发MultiValueDictKeyError.

这是我的代码.

forms.py

class SchoolSectionForm(forms.ModelForm):

    def __init__(self, *args, **kwargs):
        self.helper = FormHelper()
        self.helper.form_tag = False

        self.helper.layout = Layout(
            Div(
                'name',
                css_class='name',
            ),
        )

        super(SchoolSectionForm, self).__init__(*args, **kwargs)

    class Meta:
        model = SchoolSection

        exclude = [
            'school',
            'created_by',
        ]


class SectionBreakFormSet(BaseFormSet):

    def __init__(self, *args, **kwargs):
        super(SectionBreakFormSet, self).__init__(*args, **kwargs)


class SectionBreakForm(forms.ModelForm):

    def __init__(self, *args, **kwargs):
        self.helper = FormHelper()
        self.helper.form_tag = False

        self.helper.layout = Layout(
            Div(
                Div(
                    'start_time',
                    css_class='start_time',
                ),
                Div(
                    'end_time',
                    css_class='end_time',
                ),
            css_class='formset_element',
            )
        )

        super(SectionBreakForm, self).__init__(*args, **kwargs)

    class Meta:
        model = …
Run Code Online (Sandbox Code Playgroud)

django django-forms

9
推荐指数
2
解决办法
7763
查看次数

如何向WKWebView添加导航栏?

我正在尝试使用WKWebView实现嵌入式webView.我有初始配置,并且使用以下代码我可以将网页加载到我的故事板中.

import UIKit
import WebKit

class WebViewViewController: UIViewController {
    @IBOutlet var containerView: UIView!
    var webView: WKWebView?

    override func loadView() {
        super.loadView()

        self.webView = WKWebView()
        self.view = self.webView!
    }


    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
        var url = NSURL(string:"http://www.google.com/")
        var req = NSURLRequest(URL:url!)
        self.webView!.loadRequest(req)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


/*
// MARK: - Navigation

// In a storyboard-based application, you will often …
Run Code Online (Sandbox Code Playgroud)

navigationbar swift wkwebview

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

Django休息框架:使用电子邮件而不是用户名来获取身份验证令牌

我正在开发一个项目来为移动设备启用django rest框架身份验证.我正在使用默认令牌身份验证从发送用户名和密码的发布请求中获取用户令牌.

curl --data "username=username&password=password" http://127.0.0.1:8000/api/api-token-auth/
Run Code Online (Sandbox Code Playgroud)

(api/api-token-auth /是使用obtain_auth_token视图配置的url)

urlpatterns = [
    url(r'^api/api-token-auth/', obtain_auth_token),
    url(r'^', include(router.urls)),
]
Run Code Online (Sandbox Code Playgroud)

并且响应是用户令牌.

{"token":"c8a8777aca969ea3a164967ec3bb341a3495d234"}
Run Code Online (Sandbox Code Playgroud)

我需要在帖子上使用电子邮件密码而不是用户名密码来获取用户令牌auth,或者两者都是.我正在阅读自定义身份验证的文档http://www.django-rest-framework.org/api-guide/authentication/#custom-authentication ...但实际上,对我来说并不是很清楚.这对我很有帮助...谢谢:).

authentication django django-rest-framework

8
推荐指数
3
解决办法
1万
查看次数

如何在序列化程序类上获取经过身份验证的用户以进行验证

我正在使用django-rest-framework进行项目.在我的API视图中,经过身份验证的用户可以创建其他用户.但是,只有五个.然后,如果有一个用户注册了五个用户,我想在达到限制的响应中发送给他.然后,我需要在我的序列化程序上获得经过身份验证的用户,但是,我找不到将它从我的ModelViewSet传递给我的序列化程序的方法.

这是我的代码:

视图:

class ChildUserViewSet(viewsets.ModelViewSet):
    serializer_class = ChildUserSerializer
    queryset = User.objects.all()

    authentication_classes = (
        TokenAuthentication,
    )
    permission_classes = (
        IsAuthenticated,
    )

    def perform_create(self, serializer):
        account_group = self.request.user.userprofile.get_account_group

        mobile_number = serializer.data.get('mobile_number')
        password = serializer.data.get('password')
        user = serializer.save()
        user.set_password(password)
        user.save()

        # Generate user profile
        UserProfile.objects.create(
            user=user,
            mobile_number=mobile_number,
            user_type=CHILD,
            related_account_group=account_group,
        )
Run Code Online (Sandbox Code Playgroud)

串行:

class ChildUserSerializer(serializers.ModelSerializer):
    mobile_number = serializers.CharField()

    class Meta:
        model = User

        fields = (
            'first_name',
            'last_name',
            'email',
            'password',
            'mobile_number',
        )

    def validate(self, data):
        """
        Check that the start is before the stop. …
Run Code Online (Sandbox Code Playgroud)

django django-rest-framework

7
推荐指数
3
解决办法
5323
查看次数

无法在我的 Django 项目中使用 Sphinx 生成自动文档

我正在使用 sphinx 将文档添加到我的 Django 项目(github 链接,该项目是开源的),但是在尝试生成 python 文件的 autodoc 时遇到了很多错误。我包含了一个带有文档字符串的 models.py 文件,但是在运行时make html我遇到了不同的错误。我进行了一些更改并且错误正在更改,但我不确定我是在修复它们还是仅生成一个新错误。如果删除包含的models.py 文件,则全部运行完美。换句话说,只有当我在 .rst 文件中包含以下几行时才会生成错误:

.. automodule:: account.models
    :members:
Run Code Online (Sandbox Code Playgroud)

让我告诉你我做了什么。

  1. 当我运行make html命令时,我的第一个错误如下:

警告:autodoc:无法导入模块 u'account.models';引发了以下异常:没有名为 account.models 的模块

我在 sphinxconfg.py文件中添加了以下几行:

import os
import sys
sys.path.insert(0, os.path.abspath('../../'))
Run Code Online (Sandbox Code Playgroud)

我创建了一个文件夹,docs用于包含sphinx-quickstart命令生成的所有文件,因此,abspath 的值为../../.

  1. 好的,现在,当我运行make html命令时,出现了第二个错误:

ImproperlyConfigured:请求设置 USE_I18N,但未配置设置。在访问设置之前,您必须定义环境变量 DJANGO_SETTINGS_MODULE 或调用 settings.configure()。

我已经集成了国际化 Django 模块以在应用程序中启用多种语言,我不确定它是如何影响文档生成的,但是,为了修复这个错误,我在 sphinxconf.py文件中添加了以下几行:

from django.conf import settings
settings.configure()
Run Code Online (Sandbox Code Playgroud)
  1. 现在,如果我运行该make html命令,则会收到以下消息:

“在 AppRegistryNotReady 之前无法初始化翻译基础结构:在应用程序注册表准备好之前无法初始化翻译基础结构。检查您在导入时没有进行非延迟的 gettext 调用。 …

python django python-sphinx

7
推荐指数
1
解决办法
1997
查看次数

Nginx:CentOS 7 上 Gunicorn 套接字的权限被拒绝

我在 Django 项目部署中工作。我正在使用由 ma EC2 (AWS) 提供的 CentOS 7 服务器。我尝试通过多种方式修复此错误,但我无法理解我错过了什么。

我正在使用 ningx 和 gunicorn 来部署我的项目。我/etc/systemd/system/myproject.service用以下内容创建了我的文件:

[Unit]
Description=gunicorn daemon
After=network.target

[Service]
User=centos
Group=nginx
WorkingDirectory=/home/centos/myproject_app
ExecStart=/home/centos/myproject_app/django_env/bin/gunicorn --workers 3 --bind unix:/home/centos/myproject_app/django.sock app.wsgi:application
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

当我运行sudo systemctl restart myproject.service和 时sudo systemctl enable myproject.servicedjango.sock文件正确生成为/home/centos/myproject_app/.

nginx在文件夹 /etc/nginx/sites-available/ 中创建了我的conf flie,内容如下:

server {
    listen       80;
    server_name  my_ip;
    charset      utf-8;

    client_max_body_size       10m;
    client_body_buffer_size    128k;

    # serve static files
    location /static/ {
        alias /home/centos/myproject_app/app/static/;
    }

    location / { …
Run Code Online (Sandbox Code Playgroud)

django nginx gunicorn centos7

4
推荐指数
1
解决办法
5647
查看次数

Django - 在管理员之外使用多对多水平界面

我正在以m2m字段的形式工作.我希望这个字段看起来像django管理站点的水平界面...¿我怎么能这样做?

谢谢...

django many-to-many django-forms

3
推荐指数
1
解决办法
3328
查看次数

Docker SDK for Python 未在我的 dockerized Django 应用程序中运行

我正在处理 Django 项目,我想使用Docker SDK for Python来创建一些服务。

我的 django 应用程序是 dockerized 的,它是此存储库的克隆。

这是 Dockerfile:

FROM python:3.6.0

RUN wget http://rubies.travis-ci.org/ubuntu/14.04/x86_64/ruby-2.3.1.tar.bz2 \
    && tar xvjf ruby-2.3.1.tar.bz2 \
    && cp -rp ruby-2.3.1/* /usr/local/ \
    && rm -rf ruby-2.3.1.tar.bz2 ruby-2.3.1/

RUN mkdir /code
WORKDIR /code

RUN easy_install -U pip
RUN pip install -U pip setuptools

ADD requirements.txt /code/requirements.txt
RUN pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

这是 docker-compose 文件:

version: '2'
services:
  web:
    build: .
    image: djangobase
    command: python manage.py runserver 0.0.0.0:8000
    ports:
      - "3000:3000" …
Run Code Online (Sandbox Code Playgroud)

python django docker docker-compose

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