草莓 + Django 的电话号码集成
项目描述
strawberry-django-phonenumber
简介
GraphQL电话号码类型,与Strawberry Django集成。如果您使用django
,strawberry
和django-phonenumber-field
,则此库适用于您。
支持
- Python 3.9+ (可能也支持更早版本,需要测试)
- Django 3+
- strawberry-graphql-django 0.17+
- django-phonenumber-field 7+
以下是它的工作方式。自动获取此查询
query User {
phoneNumber {
...phoneNumberFragment
}
}
fragment phoneNumberFragment on PhoneNumber {
asInternational # +1 415-418-3420
asNational # (415) 418-3420
asE164
asRfc3966
countryCode # 1
nationalNumber
extension
rawInput
}
使用此代码
# yourapp/models.py
from django.contrib.auth.models import AbstractUser
from phonenumber_field.modelfields import PhoneNumberField
class User(AbstractUser):
phone_number = PhoneNumberField(blank=True)
# yourapp/graphql/types.py
from typing import Optional, cast
import strawberry
import strawberry_django
from strawberry.types import Info
from strawberry_django_phonenumber import PhoneNumber
from yourapp import models
@strawberry_django.type(models.User)
class User(strawberry.relay.Node):
"""GraphQL type for the User model."""
@strawberry_django.field
async def phone_number(root, info: Info) -> Optional[PhoneNumber]:
if not root.phone_number:
return None
return cast(PhoneNumber, root.phone_number)
# yourapp/graphql/__init__.py
from typing import Optional
import strawberry
import strawberry_django
from asgiref.sync import sync_to_async
from strawberry.types import Info
from .types import User
@sync_to_async
def aget_user_from_request(request):
return request.user if bool(request.user) else None
@strawberry.type
class Queries:
@strawberry_django.field
async def me(self, info: Info) -> Optional[User]:
user = await aget_user_from_request(info.context.request)
return user
schema = strawberry.Schema(query=Queries)
# yourapp/urls.py
from django.urls import path
from django.views.decorators.csrf import csrf_exempt
from strawberry.django.views import AsyncGraphQLView
from .graphql import schema
urlpatterns = [
path(
"graphql/",
csrf_exempt(
AsyncGraphQLView.as_view(
schema=schema,
graphiql=True,
)
),
),
]
安装
pip install strawberry-django-phonenumber
变更日志
0.2.0
- Remove psycopg2-binary dependency, allow psycopg>=3
0.1.0
- Initial release
贡献
运行测试
poetry run pytest
这就是目前的过程。请打开一个pull request或issue。
项目详情
关闭
strawberry_django_phonenumber-0.2.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 82e993e54205801ecd3cca4812911cd1ab988ec2dbd076a7a265a3106a6ee537 |
|
MD5 | bcd81ea9af90723c667b4398cd046428 |
|
BLAKE2b-256 | c7b855c92f5221b7a52315901e4bc71185109b2b49cc64af895c52c3a7770930 |
关闭
strawberry_django_phonenumber-0.2.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | de6dc3f7d9740592218c20e17d0a0e1e637357462c8b484bdb5dad28c3d08e66 |
|
MD5 | ceefcc32b832edf1c39deb65cae48654 |
|
BLAKE2b-256 | 86aecb590444d856768123571e239a0fc74c9915fe45813d791b7aa0af56e901 |