我正在使用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框架在我的帖子请求上获取自定义标题的方法是什么?
我正在尝试使用编辑formset.然后,我使用modelformset_factory实例化formset中的对象.当请求不是POST时,formset加载完美,但是,如果请求是POST,则formset构造函数会引发MultiValueDictKeyError.
这是我的代码.
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) 我正在尝试使用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) 我正在开发一个项目来为移动设备启用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 ...但实际上,对我来说并不是很清楚.这对我很有帮助...谢谢:).
我正在使用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) 我正在使用 sphinx 将文档添加到我的 Django 项目(github 链接,该项目是开源的),但是在尝试生成 python 文件的 autodoc 时遇到了很多错误。我包含了一个带有文档字符串的 models.py 文件,但是在运行时make html我遇到了不同的错误。我进行了一些更改并且错误正在更改,但我不确定我是在修复它们还是仅生成一个新错误。如果删除包含的models.py 文件,则全部运行完美。换句话说,只有当我在 .rst 文件中包含以下几行时才会生成错误:
.. automodule:: account.models
:members:
Run Code Online (Sandbox Code Playgroud)
让我告诉你我做了什么。
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 的值为../../.
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)
make html命令,则会收到以下消息:“在 AppRegistryNotReady 之前无法初始化翻译基础结构:在应用程序注册表准备好之前无法初始化翻译基础结构。检查您在导入时没有进行非延迟的 gettext 调用。 …
我在 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.service,django.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) 我正在以m2m字段的形式工作.我希望这个字段看起来像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)