Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django Rest框架测试HyperlinkedRelatedField_Python_Django_Rest_Python 3.x_Django Rest Framework - Fatal编程技术网

Python Django Rest框架测试HyperlinkedRelatedField

Python Django Rest框架测试HyperlinkedRelatedField,python,django,rest,python-3.x,django-rest-framework,Python,Django,Rest,Python 3.x,Django Rest Framework,我有一个使用Django Rest Framework 3.3.2和Python 3.4的Django 1.8.9应用程序 我愿意测试我的API是否能正常工作 我被困在一个测试中,该测试旨在验证我是否可以通过API将数据发布到模型中。问题是:此模型与另一个模型存在外键关系。此外键由HyperlinkedModelSerializer转换为超链接 e、 g: 这是我的测试:(重要的部分是data={…}) 如果我硬写超链接,这个测试可以工作,但是我想以一种通用的方式构建它。 我可以轻松检索相关字段

我有一个使用Django Rest Framework 3.3.2和Python 3.4的Django 1.8.9应用程序

我愿意测试我的API是否能正常工作

我被困在一个测试中,该测试旨在验证我是否可以通过API将数据发布到模型中。问题是:此模型与另一个模型存在外键关系。此外键由HyperlinkedModelSerializer转换为超链接

e、 g:

这是我的测试:(重要的部分是data={…})

如果我硬写超链接,这个测试可以工作,但是我想以一种通用的方式构建它。 我可以轻松检索相关字段的id。我想在我的测试中获得超链接

提前感谢您的帮助


干杯

您应该看看如何检索url:

def get_url(self, obj, view_name, request, format):
    """
    Given an object, return the URL that hyperlinks to the object.
    May raise a `NoReverseMatch` if the `view_name` and `lookup_field`
    attributes are not configured to correctly match the URL conf.
    """
    # Unsaved objects will not yet have a valid URL.
    if hasattr(obj, 'pk') and obj.pk in (None, ''):
        return None

    lookup_value = getattr(obj, self.lookup_field)
    kwargs = {self.lookup_url_kwarg: lookup_value}
    return self.reverse(view_name, kwargs=kwargs, request=request, format=format)
self.reverse
只是django的正常
reverse
功能。 因此,基本上,您只需要
视图\u名称
查找\u值
,在您的情况下,这是相关字段的
id

def get_url(self, obj, view_name, request, format):
    """
    Given an object, return the URL that hyperlinks to the object.
    May raise a `NoReverseMatch` if the `view_name` and `lookup_field`
    attributes are not configured to correctly match the URL conf.
    """
    # Unsaved objects will not yet have a valid URL.
    if hasattr(obj, 'pk') and obj.pk in (None, ''):
        return None

    lookup_value = getattr(obj, self.lookup_field)
    kwargs = {self.lookup_url_kwarg: lookup_value}
    return self.reverse(view_name, kwargs=kwargs, request=request, format=format)